首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查数组中的值未按预期工作

检查数组中的值未按预期工作
EN

Stack Overflow用户
提问于 2014-03-16 02:21:31
回答 2查看 31关注 0票数 0

我有这个方法:

代码语言:javascript
运行
复制
void isInteger() {
    int nums[] = new int[6];
    try {
        nums[0] = Integer.parseInt(jFormattedTextField1.getText());
        nums[1] = Integer.parseInt(jFormattedTextField2.getText());
        nums[2] = Integer.parseInt(jFormattedTextField3.getText());
        nums[3] = Integer.parseInt(jFormattedTextField4.getText());
        nums[4] = Integer.parseInt(jFormattedTextField5.getText());
        nums[5] = Integer.parseInt(jFormattedTextField6.getText());
    } catch (NumberFormatException e) {
        JOptionPane.showMessageDialog(null, "Invalid format or no input error" + e);
        return;
    }

    for (int i = 0; i < 5; i++) {

        if (nums[i] == nums[i + 1]) {
            JOptionPane.showMessageDialog(null, "Repeated number error");
            return;
        }
        if (nums[i] < 1 || nums[i] > 48) {
            //out of number range tell user of error
            JOptionPane.showMessageDialog(null, "Range error");
            return;
        }
    }


}

前5个数字是有效的,如果我在除jFormattedTextField6之外的任何文本字段中键入大于48的数字,它会给我一个异常。

我猜是for(int i=0; i<5; i++)出了点问题,但我不知道是什么原因。

EN

回答 2

Stack Overflow用户

发布于 2014-03-16 02:23:44

您将for循环迭代5次,如下所示:

代码语言:javascript
运行
复制
for(int i=0; i<5; i++)  //Size of array is 6 but iterating only 5 times

如果在5个文本字段中的任何一个字段中输入的值大于48,则

代码语言:javascript
运行
复制
if (nums[i] < 1 || nums[i] > 48) 

此语句变为true,您将在消息dialog.As中收到消息Range error,您正在使用return,则不会有任何进一步的循环执行。

票数 1
EN

Stack Overflow用户

发布于 2014-03-16 02:25:13

你的循环

代码语言:javascript
运行
复制
for (int i = 0; i < 5; i++)

是正确的,因为您使用的是nums[i + 1]。但你必须单独处理最后一个案例:

代码语言:javascript
运行
复制
int len = nums.length();

// This will loop in the range [0, len-2], in other words
// from the first index to the one before the last
for (int i = 0; i < len - 1; i++) {
    // ...
}

// Handle the last element of array
if (nums[len-1] < 1 || nums[len-1] > 48) {
    // ...
}

注意:我建议你设置一个变量(在上面的例子中是len)作为数组的长度,这样你就不必每次修改它时都手动设置它。你必须避免魔术数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22427894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档