0

したがって、ループは機能しますが、次の入力を出力するには、Enter キーを 2 回押す必要があります。それは私のループにあることがわかっており、新しい入力がメソッド scanz の後に設定されているためであることはわかっていますが、前に置くことはできません/削除することはできませんオブジェクト Scanning の作成が機能しないため、ループの外に置きます。助けていただければ幸いです。

public class NumberScanned {

    public static void main(String[] args) {
        System.out.println("Please enter '.' when you want to terminate");
        Scanner keyboard = new Scanner(System.in);
        String scannedString=keyboard.nextLine();
        Scanning scanz= new Scanning(scannedString);

    do 
    {

        System.out.println("Numbers: "+scannedString); 

       scanz.set(scannedString);

       scanz.printState();

   scannedString=keyboard.nextLine();

 }
 while(!keyboard.nextLine().equals("."));

        keyboard.close();


    }
}
4

1 に答える 1

0

ループを次のパターンに変更します。

   String scannedString = keyboard.nextLine();
    do {
        System.out.println("Numbers: "+scannedString); 
        scanz.set(scannedString);
        scanz.printState();
    } while (!(scannedString = keyboard.nextLine()).equals("."));

このように、条件チェックは新しい行の読み取りと一緒に行われます。さらに読みやすいアプローチが利用可能です:

    String scannedString = null;
    while (!(scannedString = keyboard.nextLine()).equals(".")) {
        System.out.println("Numbers: "+scannedString); 
        scanz.set(scannedString);
        scanz.printState();
    }
于 2013-08-29T18:20:23.157 に答える