Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
二维数组(素数(和)计数缺陷) import java.util.Scanner; 公共类数组1{ 公共静态void main(字符串[]args){ int table[][]=新的int[5][5]; 扫描仪扫描=新扫描仪(System.in); 对于(int i=0;i_Java_Primes - Fatal编程技术网

二维数组(素数(和)计数缺陷) import java.util.Scanner; 公共类数组1{ 公共静态void main(字符串[]args){ int table[][]=新的int[5][5]; 扫描仪扫描=新扫描仪(System.in); 对于(int i=0;i

二维数组(素数(和)计数缺陷) import java.util.Scanner; 公共类数组1{ 公共静态void main(字符串[]args){ int table[][]=新的int[5][5]; 扫描仪扫描=新扫描仪(System.in); 对于(int i=0;i,java,primes,Java,Primes,嗯,正如标题本身所说,嗯,程序应该对用户定义的数组表中的所有素数求和,但它只是对第一行求和。我检查了所有的支架,没有任何帮助。任何帮助都将不胜感激!谢谢大家! 您应该为每个迭代重置素数: import java.util.Scanner; public class array1 { public static void main(String [] args){ int table[][] = new int[5][5]; Scanner scan = n

嗯,正如标题本身所说,嗯,程序应该对用户定义的数组表中的所有素数求和,但它只是对第一行求和。我检查了所有的支架,没有任何帮助。任何帮助都将不胜感激!谢谢大家!

您应该为每个迭代重置素数:

import java.util.Scanner;
public class array1 {
    public static void main(String [] args){
        int table[][] = new int[5][5];
        Scanner scan = new Scanner(System.in);
        for(int i =0; i < 5; i++){
            for(int j =0; j < 5; j++){
                System.out.println("Write a value for row " +i + " column " +j);
                int n = scan.nextInt();
                table[i][j] = n;
            }
        }
        for(int i =0; i < 5; i++){
            for(int j =0; j < 5; j++){
                System.out.print(table[i][j] + "\t");
            }
            System.out.println();
        }

        int sum = 0;
        boolean prime = true;
        for(int i =0; i < 5; i++){
            for(int j =0; j < 5; j++){
                for(int e = 2; e < table[i][j]; e++ ){
                    if(table[i][j] % e == 0){
                        prime = false;
                    }
                }
                if(prime == true){
                    sum += table[i][j];
                }
                else{}
            }
        }
        System.out.println();
        System.out.println("Sum of all prime numbers in this array is " +sum);
    }
}
for(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
对于(int e=2;e<表[i][j];e++){
如果(表[i][j]%e==0){
素数=假;
}
}
if(prime==true){
总和+=表[i][j];
}否则{
}
prime=true;
}
}

为什么要使用2D阵列?这是需求的一部分吗?另外,我建议将此方法分成几个较小的方法。例如,您可以有一个方法输入数字数组,另一个方法检查给定的数字是否为素数。主标志(参见rayryeng的回答);2.您从未关闭
扫描仪
资源。@rayryeng关闭扫描仪不是程序中的错误,这是一种相当糟糕的编程实践!我也不想对某人大喊大叫,但他质疑这样一个琐碎的观点是不正确的,以至于我不得不重复一遍@我明白。我们都会犯错误,但你本可以更巧妙地处理。我还删除了我的答案,因为另一个答案稍微修改了代码,而我决定做更多的清理工作。可能不是OP想要的。这一个是正确的,prime必须在prime循环结束时设置为
true
!此外,+1
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        for (int e = 2; e < table[i][j]; e++) {
            if (table[i][j] % e == 0) {
                        prime = false;
            }
        }
        if (prime == true) {
            sum += table[i][j];
        } else {
        }
        prime = true;
    }
}