String code_input = "System::OutPut('hello, world');"; String code_input_index = code_input.substring(0,15); String grammar_output = "System::OutPut('"; int i = 3; while (i>2) { if(code_input_index == grammar_output){ String output_content = code_input.substring(16,code_input.length()-3); System.out.println(output_content); } }
String code_input = "System::OutPut('hello, world');";
String code_input_index = code_input.substring(0, 15);
String grammar_output = "System::OutPut('";
int i = 3;
while (i > 2) {
if (code_input_index == grammar_output) {
String output_content = code_input.substring(16, code_input.length() - 3);
System.out.println(output_content);
}
}
你这代码明显陷入死循环中了,你给i设了初始值i=3,while循环中都没有更新过i的值,所以while(i>2)就会一直死循环。
另外一点 == 无法判定两个字符串是否是相等的,必须调用equals()方法来判断字符串是否相等。
建议学下你所用ide的单步调试,这样的问题单步调试过程中很快就能发现的。
需要学习的知识:
1.循环语句的使用
2.类Object和String的使用
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
如果你的期望输出是:‘hello, world’
那么代码应该如下:
String code_input = "System::OutPut('hello, world');";
String code_input_index = code_input.substring(0, 15);
String grammar_output = "System::OutPut('";
int i = 3;
while (i > 2) {
i--;
if (code_input_index.equals(grammar_output)) {
String output_content = code_input.substring(16, code_input.length() - 3);
System.out.println(output_content);
//或者不要i--,在此处加上break
break;
}
}