java - 嵌套循环内的计算错误

标签 java

代码的目标是找到与targetNumber相加的数字。例如,如果 targetNumber = 9,则代码应获取加起来等于 targetNumber 的数字的前两个出现的索引。当我运行代码时,输​​出如下所示:

The indexes are 10 and 1

代码逻辑有什么问题?提前致谢!

public class TwoSum {

    public static void main(String[] args){

        int[] myArray = {1, 6, 43, 22, 4, 6, 4, 3, 8, 7, 3};
        int targetNumber = 9;
        int index1 = 0;;
        int index2 = 0;

        for(int i = 0; i < myArray.length; i++){
            for(int j = 1; j < myArray.length; j++){
                if(myArray[i] + myArray[j] == targetNumber){
                    index1 = i;
                    index2 = j;
                    break;
                }
            }
        }
        System.out.println("The indexes are " + index1 + " and " + index2);
    }
}

最佳答案

当您中断时,您只会跳出内部循环,因此外部循环将继续,自然终止,而不是打印出 1 然后是 10,并导致打印出索引 10,然后是索引 1。

一个有趣的结果是,您的代码本质上是找到总和为 targetNumber最后对数字,而不是第一个。如果您使 for 循环向下计数而不是向上计数,则代码应该输出正确的值,尽管它不会非常有效......

关于java - 嵌套循环内的计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31600639/

相关文章:

java - 如何使用java检查本体一致性

java - 让java与C++程序通信

java - 在java中刷新GUI的元素

java - 如果单词对于 TextView 来说太长,则强制下一个单词换行

java - 如何对 javanica @HystrixCommand 注释方法进行单元测试?

java - Atlas-run无法启动Jira,原因是“不受支持的major.minor 52.0版”

java - 用户机器上 XML 的加密/解密

java - Hibernate 生成的 MySQL 表名不同

java - 有适用于 Android 的键盘小部件吗?

java - "java *classname*"当我导入某些东西时不工作