How do I loop until the user makes correct input o

2020-04-19 05:53发布

import java.util.Scanner;

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

    Scanner input = new Scanner(System.in);
    String secret = "Please", guess;

    System.out.print( "Secret word?" );
    guess = input.next();

    for (int i = 0; guess.equals(secret); i++) {
      if( guess.equals(secret) ) {
        System.out.println("enter");
      } else {
        System.out.println( "try again" );
      }
    }
  }
}

How do I make it so that, when a user enters anything other than "Please", it will ask him/her to try again? Then the user will have to enter "Please", end the loop, and print "Enter".

4条回答
放荡不羁爱自由
2楼-- · 2020-04-19 06:04

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");
        }
    }
}
查看更多
做个烂人
3楼-- · 2020-04-19 06:05

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));
查看更多
手持菜刀,她持情操
4楼-- · 2020-04-19 06:13

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!!!");
}}
查看更多
Evening l夕情丶
5楼-- · 2020-04-19 06:22

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");
            }
        }
      }
    }
查看更多
登录 后发表回答