How do I loop until the user makes correct input on Java?

后端 未结 4 1150
囚心锁ツ
囚心锁ツ 2020-12-20 05:08
import java.util.Scanner;

public class SecretWord {
  public static void main( String[] args ) {

    Scanner input = new Scanner(System.in);
    String secret = \"         


        
相关标签:
4条回答
  • 2020-12-20 05:38

    Try This:

     import java.util.Scanner;
    
        public class SecretWord {
          public static void main( String[] args ) {
    
            Scanner input = new Scanner(System.in);
            String secret = "Please", guess;
    
            while(true){
                System.out.print( "Secret word?" );
                guess = input.next();
                if(guess.equals(secret)){
                    System.out.println("Enter");
                    break;
                }else{
                    System.out.println("Try Agian");
                }
            }
          }
        }
    
    0 讨论(0)
  • 2020-12-20 05:44

    Use a while loop instead,

    while (!guess.equals(secret)) {
        if( guess.equals(secret) ) {
            System.out.println( "enter" );
        } else {
            System.out.println( "try again" ); {
            System.out.println("Secret word")
            guess = input.next();
        }
    }
    

    Apart from this, the for loop have the following syntax,

    for (before, conditionsIsTrue, end)
    

    This means that for you the loop will be like this,

    for(int i=0; if(guess.equals(secret)), i++)
    

    Since this condition will never hold for the first loop you will never enter the for loop at all.

    You can also use do-while which uses a post test,

    do {
        System.out.println("Secret word")
        guess = input.next();
        if( guess.equals(secret) ) {
            System.out.println( "enter" );
        } else {
            System.out.println( "try again" ); {
        }
    } while (!guess.equals(secret));
    
    0 讨论(0)
  • 2020-12-20 05:49

    You have to move the input.next() inside of the loop and I would recommand to use a while instead of a for loop:

    public static void main(String[] args) {
    
        Scanner input = new Scanner(System.in);
        String secret = "Please", guess = "";
    
        System.out.print("Secret word?");
    
        while (!guess.equals(secret)) {
            guess = input.next();
    
            if (guess.equals(secret)) {
                System.out.println("enter");
            } else {
                System.out.println("try again");
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-20 05:49

    This is one of the classic examples where the use of 'do-while' construct is encouraged(and there are a very few). But it seems that you explicitly want to use 'for', therefore following is the code using 'for':

    import java.util.Scanner;
    
    public class SecretWord {
    public static void main( String[] args ) {
    
      Scanner input = new Scanner(System.in);
      String secret = "Please", guess = null ;
    
      for ( ; !secret.equals(guess);  ) {
          System.out.print( "Secret word?" );
          guess = input.next();
    
          if( guess.equals(secret) ) {
              System.out.println( "enter" );
          }
          else {
              System.out.println( "try again" ); {
          }
      }}}}
    

    I hope this works. Now comes the implementation using 'do-while' :

    import java.util.Scanner;
    public class ModifiedSecretWord {
      public static void main( String[] args ) {
    
          Scanner input = new Scanner(System.in);
          String secret = "Please", guess;
    
          do{
              System.out.print( "Secret word?" );
              guess = input.next();  
          }
          while( !guess.equals(secret) ) ;
    
          System.out.println("Shazam!!!");
    }}
    
    0 讨论(0)
提交回复
热议问题