二维数组(素数(和)计数缺陷) 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;
}
}