【问题标题】:Java - Put else statement in looping forJava - 将 else 语句放入循环中
【发布时间】:2017-03-20 05:25:49
【问题描述】:

如果找不到我输入的数据,我想进行处理。但是,当没有找到数据时,程序将打印一条消息,否则重复。我应该把 else 语句正确放在哪里?

public void Data(String x){
    for (int i = 1; i < 6; i++) {
        if (x.equalsIgnoreCase(table1[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table1[i][j]);
            }
        }
        else if (x.equalsIgnoreCase(table2[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table2[i][j]);
            }
        }
        else if (x.equalsIgnoreCase(table3[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table3[i][j]);
            }
        }
        else if (x.equalsIgnoreCase(table4[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table4[i][j]);
            }
        }
        else if (x.equalsIgnoreCase(table5[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table5[i][j]);
            }
        }
        else if (x.equalsIgnoreCase(table6[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table6[i][j]);
            }
        }
        else if (x.equalsIgnoreCase(table7[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table7[i][j]);
            }
        }
        else System.out.println("Data not found!");
    }
}

【问题讨论】:

  • 当前的else 语句有什么问题?
  • 你是说如果在第一次循环迭代中没有找到数据,你想打破整个函数,而不是重复 5 次?
  • @TimBiegeleisen 如果表达式的计算结果为 false,则程序将执行 else。但是,它会被打印 5 次
  • @NicholasSmith 是的。这就是我的意思
  • 你听说过使用break 来终止循环吗?

标签: java loops if-statement for-loop


【解决方案1】:

试试这个:

public void Data(String x){
    boolean b = false;
    for (int i = 1; i < 6; i++) {
        if (x.equalsIgnoreCase(table1[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table1[i][j]);
            }
        }
        else if (x.equalsIgnoreCase(table2[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table2[i][j]);
            }
        }
        else if (x.equalsIgnoreCase(table3[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table3[i][j]);
            }
        }
        else if (x.equalsIgnoreCase(table4[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table4[i][j]);
            }
        }
        else if (x.equalsIgnoreCase(table5[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table5[i][j]);
            }
        }
        else if (x.equalsIgnoreCase(table6[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table6[i][j]);
            }
        }
        else if (x.equalsIgnoreCase(table7[i][1])){
            for (int j = 0; j < 4; j++) {
                System.out.printf("|%-40s", table7[i][j]);
            }
        }
        else b = true;
    }
    if (b) System.out.println("Data not found!");
}

【讨论】:

    【解决方案2】:

    如果您想在找不到数据时立即终止,您可以将 else 语句更改为:

    else {
        System.out.println("Data not found!");
        return;
    }
    

    【讨论】:

    • 或者正如蒂姆指出的那样,如果您需要执行循环之后还有其他代码,您可以使用break 而不是return
    猜你喜欢
    • 1970-01-01
    • 2017-02-17
    • 2015-08-18
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 2015-10-28
    相关资源
    最近更新 更多