在Java中提示用户输入是或否

在Java中提示用户输入是或否,java,variables,loops,Java,Variables,Loops,如何提示用户循环代码“是”循环“否”退出并输入错误打印错误输入并返回语句ie。是否要输入其他名称: import java.util.Scanner; public class loop { public static void main(String[] args){ Scanner kbd = new Scanner (System.in); String decision; boolean yn; while(true){ System.

如何提示用户循环代码“是”循环“否”退出并输入错误打印错误输入并返回语句ie。是否要输入其他名称:

import java.util.Scanner;

public class loop {
public static void main(String[] args){
    Scanner kbd = new Scanner (System.in);
    String decision;
    boolean yn;
    while(true){

        System.out.println("please enter your name");
        String name = kbd.nextLine();

        System.out.println("you entered the name" + name );

        System.out.println("enter another name : yes or no");
        decision = kbd.nextLine();

        switch(decision){
        case "yes":
            yn = false;
            break;
        case "no": 
            yn = true;
            break;
        default : 
            System.out.println("please enter again ");
             return default;
        }
    }
    }
}
是的,但你想要的是“whileyn”,而不是“whiletrue”,这会永远持续下去。break仅与switch语句断开

好的,试试这个:

import java.util.Scanner;

public static void main(String args[]){
  Scanner s = new Scanner(System.in);

  boolean checking = true, valid = true;
  String[] names = new String[50];
  int i = 0;

  while(checking){
    System.out.println("Enter name...");
    me = s.nextLine();
    System.out.println("You entered " + me + ".");
    while(valid){
      System.out.println("Enter another? y/n");
      you = s.nextLine();
      if(you.equals("n")){
        valid = false;
        checking = false;
      }else if you.equals("y")){
        names[i] = you;
        i++;
        valid = false;
      }else{
        System.out.println("Sorry, try again (y/n)...");
      }
    }
  }
}
是的,但你想要的是“whileyn”,而不是“whiletrue”,这会永远持续下去。break仅与switch语句断开

好的,试试这个:

import java.util.Scanner;

public static void main(String args[]){
  Scanner s = new Scanner(System.in);

  boolean checking = true, valid = true;
  String[] names = new String[50];
  int i = 0;

  while(checking){
    System.out.println("Enter name...");
    me = s.nextLine();
    System.out.println("You entered " + me + ".");
    while(valid){
      System.out.println("Enter another? y/n");
      you = s.nextLine();
      if(you.equals("n")){
        valid = false;
        checking = false;
      }else if you.equals("y")){
        names[i] = you;
        i++;
        valid = false;
      }else{
        System.out.println("Sorry, try again (y/n)...");
      }
    }
  }
}
如果不使用Java7,就不能使用开关字符串 用while yn更改while true,这样当他键入no时,它将停止,并更改布尔yn;布尔值yn=true; 也要改变箱子里的规则

case "yes":
     yn = false;
     break;
case "no": 
     yn = true;
     break;
yn=真;若有,

yn=假;若否,

你可以用while在while内改变条件!yn,但如果是,则更直观地让yn为真;如果否,则为false

返回默认值;如果你想让用户在出错的情况下重复,那就没什么意义了。。你应该做一个新的while true来重复,直到他写一个正确的为止。我会写另一个方法

这就是你能做到的

Scanner kbd = new Scanner (System.in);

String decision;

boolean yn = true;
while(yn)
{
    System.out.println("please enter your name");
    String name = kbd.nextLine();

    System.out.println("you entered the name" + name );

    System.out.println("enter another name : yes or no");
    decision = kbd.nextLine();


    switch(decision)
    {
        case "yes":
            yn = true;
            break;

        case "no":
            yn = false;
            break;

        default:
            System.out.println("please enter again ");
            boolean repeat = true;

            while (repeat)
            {
                System.out.println("enter another name : yes or no");
                decision = kbd.nextLine();

                switch (decision)
                {
                    case "yes":
                        yn = true;
                        repeat = false;
                        break;

                    case "no":
                        yn = repeat = false;
                        break;
                    default:
                        repeat = true;
                }
            }
            break;
    }
}
是的,它会重复决策代码,但它是如何创建的,我认为这是唯一的方法

boolean input = true;
while(input){
//ask for name
//print message saying you entered xyz
//ask if user wants to enter other name
//if user enters no
//set input = false;
//else continue
}
如果不使用Java7,就不能使用开关字符串 用while yn更改while true,这样当他键入no时,它将停止,并更改布尔yn;布尔值yn=true; 也要改变箱子里的规则

case "yes":
     yn = false;
     break;
case "no": 
     yn = true;
     break;
yn=真;若有,

yn=假;若否,

你可以用while在while内改变条件!yn,但如果是,则更直观地让yn为真;如果否,则为false

返回默认值;如果你想让用户在出错的情况下重复,那就没什么意义了。。你应该做一个新的while true来重复,直到他写一个正确的为止。我会写另一个方法

这就是你能做到的

Scanner kbd = new Scanner (System.in);

String decision;

boolean yn = true;
while(yn)
{
    System.out.println("please enter your name");
    String name = kbd.nextLine();

    System.out.println("you entered the name" + name );

    System.out.println("enter another name : yes or no");
    decision = kbd.nextLine();


    switch(decision)
    {
        case "yes":
            yn = true;
            break;

        case "no":
            yn = false;
            break;

        default:
            System.out.println("please enter again ");
            boolean repeat = true;

            while (repeat)
            {
                System.out.println("enter another name : yes or no");
                decision = kbd.nextLine();

                switch (decision)
                {
                    case "yes":
                        yn = true;
                        repeat = false;
                        break;

                    case "no":
                        yn = repeat = false;
                        break;
                    default:
                        repeat = true;
                }
            }
            break;
    }
}
是的,它会重复决策代码,但它是如何创建的,我认为这是唯一的方法

boolean input = true;
while(input){
//ask for name
//print message saying you entered xyz
//ask if user wants to enter other name
//if user enters no
//set input = false;
//else continue
}
试着这样做


试着这样做,而不是打破和whiletrue,你需要说while!当用户输入yes时,您将yn设置为false。

而不是break and whiletrue,您需要说while!当用户输入yes时,您将yn设置为false。

我刚刚创建了一个小类YesNoCommandPrompt,它可以:

private String prompt;
private Supplier<T> yesAction;
private Supplier<T> noAction;

public YesNoCommandPrompt(String prompt, Supplier<T> yesAction, Supplier<T> noAction) {
    this.prompt = prompt;
    this.yesAction = yesAction;
    this.noAction = noAction;
}

// example usage
public static void main(String[] args) {
    YesNoCommandPrompt<String> prompt = new YesNoCommandPrompt<>(
            "Choose",
            () -> {return "yes";},
            () -> {return "no";});

    System.out.println(prompt.run());
}

public T run() {
    final String yesOption = "y";
    final String noOption = "n";
    try (Scanner scanner = new Scanner(System.in)) {
        while (true) {
            System.out.print(prompt + " [" + yesOption + "/" + noOption + "]: ");
            String option = scanner.next();
            if (yesOption.equalsIgnoreCase(option)){
                return yesAction.get();
            }
            else if (noOption.equalsIgnoreCase(option)){
                return noAction.get();
            }
        }
    }
}

我刚刚创建了一个小类YesNoCommandPrompt,它可以:

private String prompt;
private Supplier<T> yesAction;
private Supplier<T> noAction;

public YesNoCommandPrompt(String prompt, Supplier<T> yesAction, Supplier<T> noAction) {
    this.prompt = prompt;
    this.yesAction = yesAction;
    this.noAction = noAction;
}

// example usage
public static void main(String[] args) {
    YesNoCommandPrompt<String> prompt = new YesNoCommandPrompt<>(
            "Choose",
            () -> {return "yes";},
            () -> {return "no";});

    System.out.println(prompt.run());
}

public T run() {
    final String yesOption = "y";
    final String noOption = "n";
    try (Scanner scanner = new Scanner(System.in)) {
        while (true) {
            System.out.print(prompt + " [" + yesOption + "/" + noOption + "]: ");
            String option = scanner.next();
            if (yesOption.equalsIgnoreCase(option)){
                return yesAction.get();
            }
            else if (noOption.equalsIgnoreCase(option)){
                return noAction.get();
            }
        }
    }
}


你所说的循环代码是什么意思?如果用户输入是,则循环开始时的代码是什么意思?如果用户输入是,则循环开始时的代码是什么意思?如果用户输入是,则循环开始时的代码我只需要循环最后一个决策语句,例如如果用户输入是是,则循环语句如果用户输入否,则退出语句如果输入错误,则循环重新输入是或否我只需要循环最后一个决策语句,例如如果用户输入是是是,则循环语句如果用户输入否,则退出语句如果输入错误,则循环重新输入是或否您当前使用的是“返回默认值;”但我想你只是想循环,所以“中断;”你能不能帮我编码一下,因为默认情况下使用break会让我回到输入nameOops代码的开头,这会导致你再次输入名称。你只想让他们重新输入“是”或“否”。是的,这就是我想说的,如果输入错误,返回到最后一个语句是的,可能最好有两个嵌套的while循环:一个用于名称/多个名称,第二个用于检查用户输入是或否。当用户输入是或否时,退出第二个,退出外部第一个,当用户输入no.时,您当前使用的是“返回默认值;”但我想你只是想循环,所以“中断;”你能不能帮我编码一下,因为默认情况下使用break会让我回到输入nameOops代码的开头,这会导致你再次输入名称。你只想让他们重新输入“是”或“否”。是的,这就是我想说的,如果输入错误,返回到最后一个语句是的,可能最好有两个嵌套的while循环:一个用于名称/多个名称,第二个用于检查用户输入是或否。当用户输入是或否时,退出第二个,退出外部第一个,当用户输入no.well时,这取决于您想要如何实现它,如果您想要退出错误的用户输入,您可以中断循环,或者您可以要求用户在读取其输入后再次输入。如果输入错误,这取决于您想要如何实现它,如果您想要退出错误的用户输入,您可以中断循环,或者,如果输入错误,您可以要求用户在读取其输入后再次输入