Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用条件检查循环中输入的字符串?_Java_String_If Statement_Input_While Loop - Fatal编程技术网

Java 如何使用条件检查循环中输入的字符串?

Java 如何使用条件检查循环中输入的字符串?,java,string,if-statement,input,while-loop,Java,String,If Statement,Input,While Loop,我想写一个程序,它检查用户输入的字符串是否有给定的字符限制(例如10个字符)。如果输入的字符串超过10个字符,则系统应反复提示用户输入有效字符串(10个字符的单词),直到用户输入有效字符串 我已经有了一些代码,但它还没有工作,因为我不知道如何将进程上移到开始(到第1行),以便重新提示用户,或者有其他简单的方法 System.out.print("Input: "); String inputChars = Input.readString(); while (inputChars.length

我想写一个程序,它检查用户输入的字符串是否有给定的字符限制(例如10个字符)。如果输入的字符串超过10个字符,则系统应反复提示用户输入有效字符串(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,所以如果这个问题很愚蠢,请告诉我如何解决它。提前感谢

只需删除开头的
字符串

  while (inputChars.length() > 10){
     System.out.print("Input: ");
     inputChars = Input.readString();  // here is mistake now
  }
通过在开始处使用
字符串
,您将再次尝试重新定义相同的名称变量。

查看您的循环:

while (inputChars.length() > 10){
    System.out.print("Input: ");
    String inputChars = Input.readString();
}
循环体的第二行重新声明
inputChars
变量。你不能这么做,因为它已经在范围内了。您只想替换上一个值:

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

String inputChars;
do {
    System.out.print("Input: ");
    inputChars = input.readString();
} while (inputChars.length() > 10);
请注意,我还将
Input
变量重命名为
Input
,以遵循正常的Java命名约定。实际上,我可能会将
input
inputChars
更改为更具描述性-尤其是,目前没有任何迹象表明输入数据的含义。

更改为:

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循环在这里是一个更好的构造,因为它使您的意图更清晰,代码更清晰。

输入的是什么类?比如,什么包裹?非常感谢Jon Skeet,我弄错了,是“重新定义”了varinputChar@Dozent:是的,但不要只是纠正错误-尝试用我提到的其他方法改进代码。@Dozent:如果有帮助,请不要忘记接受答案。
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");