这段Java 到底哪里出现问题了啊(本人Java 新手)

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;
            }

        }