方法不会返回更新的字符串

时间:2017-08-17 16:08:33

标签: java string methods return-value

我有一个方法可以从用户那里获取String的输入并验证4件事:

它只有1个单词,不包含空格,不包含数字,并且没有空白/按下回车键。

如果出现任何这些问题,则会打印错误消息,并再次调用该方法以重新提示用户输入。如果字符串满足要求,则方法返回String。

在大多数情况下,该方法按预期工作,但是,如果我第一次输入错误的repsonse,那么即使它提示我错误并输入正确的响应,它也会返回我第一次输入的错误响应。有人可以解释为什么会这样吗?

    public static String getName() {

    //Prompt User for Name and Store it as the tmp String
    System.out.print("Please enter the target string here: ");
    String tmp = in.nextLine();

    //Check to see if the string is blank, contains more than one word, or contains numbers. If so, give error and re-prompt
    if(tmp.equals("") || tmp.contains(" ") || tmp.contains("1") || tmp.contains("2") || tmp.contains("3") || tmp.contains("4")
    || tmp.contains("5") || tmp.contains("6") || tmp.contains("7") || tmp.contains("8") || tmp.contains("9") || tmp.contains("0")) {
        System.out.println("\nYou entered an invalid response, please try again\n");
        getName();
    }

    //Return the String
    return tmp;
}

1 个答案:

答案 0 :(得分:4)

您必须分配字符串:

tmp = getName();