2017-04-18 15 views
1
package somePackage; 

import java.util.Scanner; 

public class SomeClass { 
    private static Scanner input; 

    public static void main(String[] args) { 

     input = new Scanner(System.in); 
     System.out.print("Please enter a command (start or stop) : "); 
     String scanner = input.nextLine(); 

     if ("start".equals(scanner)) { 
      System.out.println("System is starting"); 
     } else if ("stop".equals(scanner)) { 
      System.out.println("System is closing"); 
     } 

     while (!"start".equals(scanner) && (!"stop".equals(scanner))) { 
      System.out.print("Please try again : "); 
      scanner = input.nextLine(); 
     } 
    } 
} 

ユーザが「開始」または「停止」を入力しなかった場合。プログラムは、ユーザーに "再試行:"を要求します。その後、ユーザが "start"を入力すると、出力は空白になります。 if()またはelse if()ステートメントの元のSystem.out.print()にループを戻すにはどうすればよいですか?while()ループをif()ステートメントに戻すにはどうすればよいですか?

P.S、私はJavaに新しいので、どんなフィードバックが助けになるだろう:)ありがとう!

+1

'if'ステートメントは' while'ループ内になければなりません。 –

+0

あなたは私に例を教えてもらえますか? – Crypto

+0

'Scanner'から' input'という名前を読み取る 'scanner'という文字列は、わかりにくいことに注意してください。これらの名前を交換することを検討してください。 –

答えて

3

文はちょうど1時間を示すことが必要な場合は場合は、タイプが開始または停止した場合、whileループを壊すので、whileループの後にそれを置くために十分であり、それは正しいメッセージを出力しますたとえば、次のようになります。

public class SomeClass { 
    private static Scanner input; 

    public static void main(String[] args) { 

     input = new Scanner(System.in); 
     System.out.print("Please enter a command (start or stop) : "); 
     String scanner = input.nextLine(); 

     while (!"start".equals(scanner) && (!"stop".equals(scanner))) { 
      System.out.print("Please try again : "); 
      scanner = input.nextLine(); 
     } 
     if ("start".equals(scanner)) { 
      System.out.println("System is starting"); 
     } else if ("stop".equals(scanner)) { 
      System.out.println("System is closing"); 
     } 
    } 
} 
1

whileループは、本体の外側のステートメントに「戻る」ことはできません。

ループの本体の内側にループバックしたいものがすべて必要です。たとえば:

System.out.print("Please enter a command (start or stop) : "); 
while (true) { 
    scanner = input.nextLine(); 

    if ("start".equals(scanner)) { 
    System.out.println("System is starting"); 
    break; // Exits the loop, so it doesn't run again. 
    } else if ("stop".equals(scanner)) { 
    System.out.println("System is closing"); 
    break; 
    } 

    // No need for conditional, we know it's neither "start" nor "stop". 

    System.out.print("Please try again : "); 
    // After this statement, the loop will run again from the start. 
} 
+0

ありがとうAndy、それは働いた!あなたはなぜあなたが書いたのか教えてくれませんか?私は理解できないようです。 – Crypto

+0

'while(true)'は単純に「自分自身でループを壊すまで続ける」という意味です。 –

1

目的の出力が得られるまでループすることができます。 do-whileを使用する例:

input = new Scanner(System.in); 

String scanner; 

do { 
    System.out.print("Please enter a command (start or stop) : "); 
    scanner = input.nextLine(); 
} while (!"start".equals(scanner) && !"stop".equals(scanner)); 

if ("start".equals(scanner)) { 
    System.out.println("System is starting"); 
} 
else if ("stop".equals(scanner)) { 
    System.out.println("System is closing"); 
} 
関連する問題