-1

我想编写一个程序,它检查用户输入的字符串是否有给定的字符限制(例如 10 个字符)。如果输入的 String 超过 10 个字符,则系统应反复提示用户输入有效的 String(10 个字符的单词),直到用户输入有效的字符串。

我已经有一些代码,但它还不能工作,因为我不知道如何将进程向上移动(到第 1 行)以重新提示用户或有其他简单的方法?

System.out.print("Input: ");
String inputChars = Input.readString();

while (inputChars.length() > 10){
    System.out.print("Input: ");
    String inputChars = Input.readString();  // here is mistake now
}
System.out.print("Output: ");
System.out.print("The enter has 10 chars");

我只想检查输入的单词,如果超过 10 个字符,则跳过它并再次提示用户输入不超过 10 个字符的单词。我还不太擅长java,所以如果这个问题很愚蠢,请解释我如何解决它。提前致谢

4

3 回答 3

3

看看你的循环:

while (inputChars.length() > 10){
    System.out.print("Input: ");
    String inputChars = Input.readString();
}

循环体的第二行重新声明inputChars变量。你不能这样做,因为它已经在范围内。您只想替换以前的值

inputChars = Input.readString();

您还应该考虑重组代码以避免重复:

String inputChars;
do {
    System.out.print("Input: ");
    inputChars = input.readString();
} while (inputChars.length() > 10);

请注意我如何将Input变量重input命名为遵循正常的 Java 命名约定。实际上,我可能会同时更改两者inputinputChars更具描述性-特别是,目前没有迹象表明输入数据的含义

于 2012-11-01T18:14:06.653 回答
1

只需删除String开头:

  while (inputChars.length() > 10){
     System.out.print("Input: ");
     inputChars = Input.readString();  // here is mistake now
  }

通过String开始,您正在尝试再次重新定义同名变量。

于 2012-11-01T18:13:57.133 回答
0

改成:

String inputChars = ""
do {
    System.out.print("Input: ");
    inputChars = Input.readString();
} while (inputChars.length() > 10)
System.out.print("Output: ");
System.out.print("The enter has 10 chars");

之前,inputChars已经在循环之前声明了,所以你不需要重新声明变量。

do-while 循环在这里是一个更好的结构,因为它使您的意图更清晰,并使您的代码更干净。

于 2012-11-01T18:15:47.023 回答