Java 控制流条件
若应用了条件满足和中断语句,我无法理解为什么For循环会继续执行 代码:Java 控制流条件,java,conditional-statements,Java,Conditional Statements,若应用了条件满足和中断语句,我无法理解为什么For循环会继续执行 代码: 类ProgramControlStatements{ 公共静态void main(字符串[]args)引发java.io.IOException{ System.out.println(“菜单:”); System.out.println(“选项:”); 系统输出打印项次(“1:If/Else”); System.out.println(“2:开关”); 对于(int i=0;ib 计算机控制语句:开关 没有有效的选项 第
类ProgramControlStatements{
公共静态void main(字符串[]args)引发java.io.IOException{
System.out.println(“菜单:”);
System.out.println(“选项:”);
系统输出打印项次(“1:If/Else”);
System.out.println(“2:开关”);
对于(int i=0;i<5;i++){
选择选项();
};
};
静态void chooseOption()引发java.io.IOException{
char choice=(char)System.in.read();
开关(选择){
案例“a”:
System.out.println(“计算机控制语句:If/Else”);
打破
案例“b”:
System.out.println(“计算机控制语句:开关”);
打破
违约:
System.out.println(“无有效选项”);
};
}
}
预期结果:
Menu:
Choice:
1: If/Else
2: Switch
a
Computer control statement: If/Else
b
Computer control statement: Switch
a
Computer control statement: If/Else
b
Computer control statement: Switch
a
Computer control statement: If/Else
如果选择了chara,则打印“If/Else”并等待下一次输入,直到i a
计算机控制语句:If/Else
没有有效的选项
第二次输入->b
计算机控制语句:开关
没有有效的选项
第三输入->a
计算机控制语句:If/Else
节目结束
我希望跳过默认语句,因为应用了break语句。
当System.in.read()返回新行时,是否会发生这种情况?
我认为从那时起,同样的行为也会发生;执行while循环吗?这是由于悬挂的换行符造成的。只需添加
System.in.read()再次按如下所示进行编码>以使用悬空换行符,例如(char)System.in.read()
仅使用a
,而不使用a
之后按的输入字符
public class Main {
public static void main(String[] args) throws java.io.IOException {
System.out.println("Menu: ");
System.out.println("Choice: ");
System.out.println("1: If/Else");
System.out.println("2: Switch");
for (int i = 0; i < 5; i++) {
chooseOption();
}
}
static void chooseOption() throws java.io.IOException {
char choice = (char) System.in.read();
System.in.read();// Add this line
switch (choice) {
case 'a':
System.out.println("Computer control statement: If/Else");
break;
case 'b':
System.out.println("Computer control statement: Switch");
break;
default:
System.out.println("No valid option");
}
}
}
这是因为悬垂的断线角色。只需添加System.in.read()再次按如下所示进行编码>以使用悬空换行符,例如(char)System.in.read()
仅使用a
,而不使用a
之后按的输入字符
public class Main {
public static void main(String[] args) throws java.io.IOException {
System.out.println("Menu: ");
System.out.println("Choice: ");
System.out.println("1: If/Else");
System.out.println("2: Switch");
for (int i = 0; i < 5; i++) {
chooseOption();
}
}
static void chooseOption() throws java.io.IOException {
char choice = (char) System.in.read();
System.in.read();// Add this line
switch (choice) {
case 'a':
System.out.println("Computer control statement: If/Else");
break;
case 'b':
System.out.println("Computer control statement: Switch");
break;
default:
System.out.println("No valid option");
}
}
}
这并不像@Arvind Kumar Avinash所说的那么简单,根据你的情况,你可能会在每一行后面遇到\r
(回车)、\n
(新行)或两者都遇到\r\n
因此,仅仅添加另一个System.in.read()
行是一种可能并不总是有效的解决方法
我建议改为使用,如下所示:
LE:作为对评论中请求的回答,我想指定,当我想要解析输入时,我总是尝试使用Scanner
,而不介意性能。当我考虑性能时,我使用BufferedReader
。切勿直接在系统中输入。您可以在这里提供的答案中阅读更多内容。这并不像@Arvind Kumar Avinash所说的那么容易,根据您的不同,您可能会在每一行后面遇到\r
(回车)、\n
(新行)或两者\r\n
因此,仅仅添加另一个System.in.read()
行是一种可能并不总是有效的解决方法
我建议改为使用,如下所示:
LE:作为对评论中请求的回答,我想指定,当我想要解析输入时,我总是尝试使用Scanner
,而不介意性能。当我考虑性能时,我使用BufferedReader
。切勿直接在系统中输入。您可以在这里提供的答案中阅读更多内容。我相信答案是目前为止提供的两个答案的组合
为了快速解决问题,@Arvind Kumar Avinash非常好
当@Valdrinium指定替代方案时,可能会考虑更多问题
我对选择@Arvind Kumar Avinash作为最终版本持怀疑态度,尽管它解决了本例中的问题
管理员可以帮忙吗?我相信答案是目前为止提供的两个答案的组合
为了快速解决问题,@Arvind Kumar Avinash非常好
当@Valdrinium指定替代方案时,可能会考虑更多问题
我对选择@Arvind Kumar Avinash作为最终版本持怀疑态度,尽管它解决了本例中的问题
管理员可以帮忙吗?谢谢。回答得很好。你能指给我看一下悬垂的断线字符吗。我不知道我是否理解你是最受欢迎的。我对我的答案做了更多的解释。在Valdrinium的答案之后,我想我们应该定义一个更深刻的答案?我是否应该提出另一个关于扫描仪与系统类的问题,并在那里解决这个问题?谢谢。回答得很好。你能指给我看一下悬垂的断线字符吗。我不知道我是否理解你是最受欢迎的。我对我的答案做了更多的解释。在Valdrinium的答案之后,我想我们应该定义一个更深刻的答案?我是否应该提出另一个关于扫描仪与系统类的问题,并在那里解决这个问题?好提示!我一直在试图理解为什么我应该使用System.in.read()和Scanner。我知道Scanner类,并在需要输入时使用它。你能告诉我为什么以及什么时候使用System.in.read vs Scanner吗?谢谢你提供的关于结束行语句的链接。我是否应该提出另一个问题,为什么/什么时候我应该使用System Class方法。in.read vs Scanner Class?如果您想要更详细的解释,我认为这是一个好主意,因为我找不到,我会这样做,谢谢。当我完成问题后,将更新此聊天中的链接。海诺洛克:好提示!我一直在试图理解为什么我应该使用System.in.read()和Scanner。我知道Scanner类,并在需要输入时使用它。你能告诉我为什么以及什么时候使用System.in.read vs Scanner吗?谢谢你提供的关于结束行语句的链接。我是否应该提出另一个问题,为什么/何时应该使用系统类方法。