[JAVA] Pętla while operująca na double'ach zamykana literą


(Dolorismachina) #1

Tytuł dośc chaotyczny ale lepiej określić problemu nie potrafiłem. Chodzi mi mianowicie o to, że pętla ma się wykonywać dopóki użytkownik nie wciśnie "q". Niestety to nie działa bo string jest sparsowany do double'a. Wydawało mi się, że będzie działać jeśli napiszę to w ten sposób, że sprawdzam czy użytkownik wcisnął "q" zanim sparsuję ale wynikiem jest jedynie błąd w konsoli. Mam nadzieję, że w miarę zrozumiale to wyjaśniłem. Wiem, że to pewnie prosta sprawa ale mimo wszystko potrzebuje pomocy.

import java.util.Scanner;

public class ShoppingCalculator

{

   public static void main(String[] args)

   {

      Scanner scan = new Scanner(System.in);

      String input = "";

      double sum = 0;


      while (input != "q")

      {

		 System.out.print("Enter the amount you spent on the next item or 'q' to finish: ");

                 input = scan.nextLine();


		 if (input == "q")

		 {

			 break;

		 }

		 else

		 {

			double num = Double.parseDouble(input);


			sum += num;

         	        System.out.println(sum);

		 }


      }


      System.out.println("Total: " + sum);


   }

}

(Damgora) #2
import java.util.Scanner;

public class ShoppingCalculator

{

    public static void main(String[] args)

    {

        Scanner scan = new Scanner(System.in);

        String input = "";

        double sum = 0;

        while (true)

        {

            System.out.print("Enter the amount you spent on the next item or 'q' to finish: ");

            input = scan.nextLine();

            if(input.equals(new String("q")))

                break;

            try{

                double num = Double.parseDouble(input);

                sum += num;

                System.out.println(sum);

            }

            catch(NumberFormatException e){

                System.out.println("Error");

            }

        }

        System.out.println("Total: " + sum);

    }

}

tak na szybko