私はソーダマシンからアイテムのコストを入力し、支払った金額の変更を返す必要がある私のAP Compsciクラスのプロジェクトを持っています。"while(x || y)" Javaのループを使用
しかし、私は入力に少し問題があります。私は入力が2倍であることを保証するためにwhileループを使用しています。支払額の値はコスト以上です。 これをテストすると、スキャンするために支払った金額を入力する必要があるようです(23〜30行目を参照)。
私は、 "scan.next()"をループ内の別の場所に移動し、 "scan.next()"を "scan.nextLine"に変更しようとしましたが、 。誰かが、入力が倍以上でないかどうかを確認できる方法を知っていますか?そうであれば、再度入力するようにユーザーに促しますか?私は以下のコードを貼り付けました:
import java.util.Scanner;
import java.lang.Math;
public class Sodamachine
{
public static void main(String [] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("SODA MACHINE: V1.2");
System.out.println("Input the cost of the soda can and the amount you put in and your change will");
System.out.println("be output.");
System.out.print("\nEnter cost of purchase below:\n$");
while (! scan.hasNextDouble())
{
System.out.println("ERROR: Input was not a real number.");
System.out.print("Enter cost of purchase below:\n$");
scan.nextLine();
}
double cost = scan.nextDouble();
//this is where the problem starts
System.out.print("Enter amount paid below:\n$");
while ((! scan.hasNextDouble()) || (scan.nextDouble() < cost))
{
System.out.println("ERROR: Improper input.");
System.out.print("Enter amount paid below:\n$");
scan.next();
}
double paid = scan.nextDouble();
}
}
一部の時間を2回スキャンしています。入力ごとに 'next() 'を呼び出すように書き直す必要があります。 –
入力を文字列として取得しようとすると、ユーザーにもう一度プロンプトを表示せずに、必要なすべてのチェックを行うことができます(たとえば、ダブルの場合)。 – Sentry