Java 为什么';t while循环以额外的“结束”;或;条件
我希望while循环在条件“index>=maxlength”时结束 问题是它只是说“请输入一个字符串”。用户输入一个字符串,单击“回车”,它就停留在下一行。while循环之后的任何内容都不会执行Java 为什么';t while循环以额外的“结束”;或;条件,java,loops,while-loop,Java,Loops,While Loop,我希望while循环在条件“index>=maxlength”时结束 问题是它只是说“请输入一个字符串”。用户输入一个字符串,单击“回车”,它就停留在下一行。while循环之后的任何内容都不会执行 Please Enter a String: *ddddddddddd* | 如果我没有条件“index>=maxlength”,代码就可以正常工作 public static int getaline( char message[], int maxlength ) { int ind
Please Enter a String: *ddddddddddd*
|
如果我没有条件“index>=maxlength”,代码就可以正常工作
public static int getaline( char message[], int maxlength ) {
int index = 0;
int character = 0;
maxlength = 5;
System.out.print("Please enter a string: ");
character = fgetc(System.in);
while (character != '\n' || index >=maxlength){
message[index] = (char) character;
index++;
character = fgetc(System.in);
}
if (index >= maxlength){
System.out.println("Overflow");
}
System.out.println("The amount of elements in the array is" + index);
return 0;
}
如果希望循环在索引大于或等于maxlength时结束,则需要条件为相反的:它应该在索引不大于或等于maxlength时循环
while (character != '\n' && index < maxlength)
while(字符!='\n'&&index
为什么while循环不以额外的“or”条件结束
因为您的测试表明,如果index
大于maxlength
,则继续循环
它是在做你说的,而不是你的意思。计算机是这样的:-)
是否有一种方法不允许用户在最大长度之后输入更多字符 这取决于你的意思:
- 如果你问是否有办法在读了“max”之后停止接受字符,@JohnKugelman的回答说如何。(问题是直到行尾的字符仍然未读…如果您尝试从用户处接受另一项,您的应用程序将首先看到这些字符。例如,如果您再次调用
)getaline
- 如果要忽略读取“max”后的字符,则需要更改代码,使其不会在“max”处停止读取,但如果
小于最大值,则只会将它们添加到索引
消息中
- 如果要阻止用户输入字符,则没有简单的方法。也许,根本不可能。(您很可能不想尝试这样做,因为这会带来其他各种问题。)
InputStream.read()
返回-1
。如果您的fgetc
方法返回char
,则将fgetc
的结果与-1
进行比较,将始终给出false
。