Java for循环与数组集的比较 在数组中只显示相等元素的正确条件是什么。
这是密码Java for循环与数组集的比较 在数组中只显示相等元素的正确条件是什么。,java,arrays,swing,joptionpane,Java,Arrays,Swing,Joptionpane,这是密码 int num[]=new int[5]; int numm[]=new int[5]; for(int x=0;x<num.length;x++){ num[x]=Integer.parseInt(JOptionPane.showInputDialog("Enter Values for num["+(x+1)+"]")); } for(int x1=0;x1<num.length;x1++){
int num[]=new int[5];
int numm[]=new int[5];
for(int x=0;x<num.length;x++){
num[x]=Integer.parseInt(JOptionPane.showInputDialog("Enter Values for num["+(x+1)+"]"));
}
for(int x1=0;x1<num.length;x1++){
num[x1]=Integer.parseInt(JOptionPane.showInputDialog("Enter Values for num1["+(x1+1)+"]"));
}
String tosho="";
for(int a=0;a<num.length;a++){
for(int a1=0;a1<numm.length;a1++){
if(num[0]==numm[0]){
num[0]=numm[0];}
else if(num[1]==numm[1]){
num[1]=numm[1];}
else if(num[2]==numm[2]){
num[2]=numm[2];}
else if(num[3]==numm[3]){
num[3]=numm[3];}
else if(num[4]==numm[4]){
num[4]=numm[4];}
}
}tosho+=(num[0])+""+(num[1])+""+(num[2])+""+(num[3])+""+(num[4]);
JOptionPane.showMessageDialog(null, "both "+tosho+" found in array.");
当我在第一个aary中输入1,2,3,4,5时
然后是第二个数组中的1,22,3,4,5
它仍然显示2或22,即使它们不相等,,,,为什么代码这么长
for(int a=0;a<num.length;a++){
for(int a1=0;a1<numm.length;a1++){
if(num[0]==numm[0]){
num[0]=numm[0];}
else if(num[1]==numm[1]){
num[1]=numm[1];}
else if(num[2]==numm[2]){
num[2]=numm[2];}
else if(num[3]==numm[3]){
num[3]=numm[3];}
else if(num[4]==numm[4]){
num[4]=numm[4];}
}
}
你喜欢这样吗
List <Integer> matchedElements = new ArrayList<Integer>();
for(int a=0;a<num.length;a++){
for(int a1=0;a1<numm.length;a1++){
if(num[a]==numm[a1]){
matchedElements.add(num[a]);
}
}
}
Integer[] mached = matchedElements.toArray(new Integer[matchedElements.size()]);
System.out.println(Arrays.toString(mached));
你开始用
if(num[0]==numm[0]){
num[0]=numm[0];}
然后使用ELSE,这意味着只有在第一个if未执行时才会对其进行计算。这意味着在更改数组的第一个元素后,不会更改其他元素,因为num[0]将等于numm[0],因此不会更改其他元素。删除所有其他单词,它就会工作。作业错误。从不将值指定给numm变量 嵌套循环在代码中无效。没有使用和a1循环变量 我添加了一个额外的数组来存储相同的值,称为sameValues,并分配相同的值
int num[]=new int[5]; int numm[]=new int[5]; int sameValues[] = new int[5];
for(int x=0;x<num.length;x++){
num[x]=Integer.parseInt(JOptionPane.showInputDialog("Enter Values for num["+(x+1)+"]"));
}
for(int x1=0;x1<num.length;x1++){
numm[x1]=Integer.parseInt(JOptionPane.showInputDialog("Enter Values for num1["+(x1+1)+"]"));
}
int counter = 0;
String tosho="";
for(int a=0;a<num.length;a++){
for(int a1=0;a1<numm.length;a1++){
if(num[a] == numm[a1]){
sameValues[counter] = num[a];
counter++;
}
}
}
for(int x=0;x<counter ;x++){
tosho+=(num[x]) + " ";
}
可能是num[x1]
您可以使用此代码填充tosho:
这两个嵌套循环
for(int a=0;a<num.length;a++){
for(int a1=0;a1<numm.length;a1++){
...
这些都是无用的
您没有以任何方式使用变量a和a1
相反,您可以简单地将形式0迭代到数组长度,并检查具有相同索引的元素是否相等。是的,它可以缩短,但逻辑是否仍然错误?对于所描述的问题,我会使用ArrayList.contains找到交集,并显示它…但它仍然不显示唯一相等的元素。这是因为如果手动检查数组的每个元素,甚至不需要这两个循环所有这些ifsbig错误为numm[],哈哈哈,谢谢你的代码。
String tosho="";
for(int a=0;a<num.length;a++) {
if(num[a]==numm[a]) {
tosho+=num[a]+",";
}
}
for(int a=0;a<num.length;a++){
for(int a1=0;a1<numm.length;a1++){
...