You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字符串数组元素检查的while循环输入正确值后仍循环,代码问题排查

问题排查:输入正确值后while循环持续运行的原因

先来看你给出的代码片段:

String [] vKeywordsArray; 
int vNumberofKeywords = Integer.parseInt(JOptionPane.showInputDialog("请输入您想要录入的关键词数量?")); 
vKeywordsArray = new String[vNumberofKeywords]; 
int i=0; 
while (i < vNumberofKeywords) { 
    vKeywordsArray[i] = JOptionPane.showInputDialog("请录入要存储在索引" +i+ "处的关键词。"); 
    i++; 
} 
JOptionPane.showMessageDialog(null, "感谢您的输入。"); 
for (int j=0; j < vKeywordsArray.length; j++) { 
    String vKeywords = JOptionPane.sh...

从这段代码的核心逻辑来看,while循环本身的写法是没问题的:i从0开始,每录入一个关键词就自增1,当i等于vNumberofKeywords时,循环条件i < vNumberofKeywords不成立,循环就会终止。出现「输入正确值后仍持续循环」的情况,大概率是以下几个隐藏问题导致的:

  • 问题1:vNumberofKeywords的值不符合预期
    比如你输入关键词数量时不小心敲了一个很大的数字(比如100),导致需要重复录入很多次,误以为循环“卡住”;如果输入的是负数,创建数组时会直接抛出NegativeArraySizeException,程序会直接崩溃,根本不会进入循环。

  • 问题2:i的递增逻辑被异常干扰
    要是你的完整代码里给录入关键词的代码加了异常捕获,却没处理i的递增逻辑,就会导致循环一直停留在同一个索引位。比如这种错误写法:

    while (i < vNumberofKeywords) {
        try {
            vKeywordsArray[i] = JOptionPane.showInputDialog("请录入关键词...");
            i++; // 把递增放在try块里,异常时就不会执行
        } catch (Exception e) {
            // 只捕获异常没处理i的递增
        }
    }
    
  • 问题3:变量作用域冲突
    如果你在循环内部重新声明了同名的i变量,就会覆盖外部的i,导致外部的i永远不会递增,循环也就永远停不下来。比如:

    int i=0; 
    while (i < vNumberofKeywords) { 
        int i = 0; // 这里重新声明了局部变量i,和外部的i没关系
        vKeywordsArray[i] = JOptionPane.showInputDialog(...); 
        i++; 
    }
    
  • 问题4:误把后续代码的异常当成while循环问题
    你给出的代码最后有个没写完的for循环,如果这个循环里有逻辑错误(比如死循环),会让你误以为是前面的while循环在持续运行。

建议你先加一行打印代码确认vNumberofKeywords的实际值(比如System.out.println("要录入的关键词数量:" + vNumberofKeywords);),再检查i的递增逻辑是否在所有场景下都会执行,以及有没有变量作用域的冲突。

内容的提问来源于stack exchange,提问作者Phong Truong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:05:36