【问题标题】:Java: Making a program keep prompting for user input when they enter nothingJava:当用户什么都不输入时,让程序不断提示用户输入
【发布时间】:2017-09-11 22:49:28
【问题描述】:

我正在编写一个程序,该程序要求用户输入并在不满足任何几个条件时不断提示用户输入有效输入。一种这样的条件是输入不能是空字符串。 (即用户不输入任何内容,只需按 Enter 键)。我该如何测试呢?这是我到目前为止的代码: (注意:方法 isDateAcceptable 在这里并不真正相关,因为我希望它说“数字不可接受。”然后在用户输入“”时重新提示)。 编辑:我应该在当前代码中添加它,当用户输入一个空字符串时,光标只会移动到下一行而不结束程序。

public static String getNumOrDate(Scanner console){
    System.out.print("Enter a number or a date mm/dd/yyyy (-1 to exit):");
    String input = console.next();
    while(!input.equals("-1")) {
        if(input.isEmpty()){
            System.out.println("Number not acceptable.");
            getNumOrDate(console);
        }
        if (input.contains("/")) {
            while (!isDateAcceptable(input)) {
                System.out.println("Date not acceptable.");
                getNumOrDate(console);
            }
        } else if (canBeParsed(input)) {
            while (!isNumberAcceptable(input)) {
                System.out.println("Number not acceptable.");
                getNumOrDate(console);
            }
        }

    }
    System.out.println(isNumberAcceptable(input));
    return input;
}

public static boolean canBeParsed(String input){
    boolean parsable = true;
    try{
        Integer.parseInt(input);
    }catch(NumberFormatException e){
        parsable = false;
    }
    return parsable;
}
public static boolean isNumberAcceptable (String s){
    boolean isAcceptable = true;
    int numDigits = s.length();
    if(s.isEmpty()&& s == null){
        isAcceptable = false;
    }
    for(int i = 0; i < numDigits; i++){
        if(!Character.isDigit(s.charAt(i))){
            isAcceptable = false;
            break;
        }
    }

    if(isAcceptable){
        int number = Integer.parseInt(s);
        if((number < 1 && number != -1) || number > MAX_NUMBER){
            isAcceptable = false;
        }
    }
    return isAcceptable;
}

【问题讨论】:

  • 字符串有一个isEmpty 方法。这不工作吗?
  • 我倾向于使用nextLine() 而不是next() 来处理这种事情。您尝试一次输入一行,而不是一次输入一个单词。

标签: java arrays for-loop input while-loop


【解决方案1】:

我建议你创建一个新的 JFrame 窗口并将一个输入字段和一个按钮拖入其中。选择该按钮并在其上添加一个事件。然后您可以使用 getText() 方法获取字符串。并检查它是否是否为“”。如果满足您的要求,则可以关闭 Jframe,否则它将保持打开状态。

【讨论】:

  • 认真的吗? OP 正在努力学习控制台输入的工作原理,您的建议是让他/她做一些更复杂的事情?
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 2016-01-30
相关资源
最近更新 更多