我正在尝试创建一个Java程序,我将数组的元素更改为2,将其更改为4,将等于4的元素更改为8,将等于8的元素更改为2.我无法弄清楚如何以这样的方式改变这些元素,即我不改变那些已经被切换的元素,因此我最终得到了一堆2个。
import java.io.IOException;
import java.util.Scanner;
public class Prob8Array {
static int n, i;
public static void main(String[] args) throws IOException {
Scanner reader = new Scanner(System.in);
System.out.println("Nr of array elements:");
n = reader.nextInt();
System.out.println("Array elements:");
int[] a = new int[n];
for(i = 0;i < n; i++) {
a[i] = reader.nextInt();
}
reader.close();
for (i=0; i < n; i++) {
if (a[i] == 2) {
a[i] = 4;
}
if (a[i]==4) {
a[i] = 8;
}
if (a[i]==8) {
a[i]=2;
}
}
for (i=0; i<n; i++)
System.out.println(a[i]);
}
}
这是我能想到的最好的,但它显然不会像我想要的那样工作。
答案 0 :(得分:1)
由于您使用的是if
语句,因此您可以为单个数组元素执行多个语句。将它们更改为if..else if..else
结构。
if (a[i] == 2) {
a[i] = 4;
} else if (a[i] == 4) {
a[i] = 8;
} else (a[i] == 8) {
a[i] = 2;
}
答案 1 :(得分:0)
您希望每个数组元素最多进行一次更改,这意味着如果任何条件为true
,则您不希望评估以下条件。这可以通过if-else-if:
for (i = 0; i < n; i++) {
if (a[i] == 2) {
a[i] = 4;
} else if (a[i] == 4) {
a[i] = 8;
} else if (a[i] == 8) {
a[i] = 2;
}
}
另一种选择是使用switch
声明:
for (i = 0; i < n; i++) {
switch (a[i]) {
case 2:
a[i] = 4;
break;
case 4:
a[i] = 8;
break;
case 8:
a[i] = 2;
break;
}
}
答案 2 :(得分:0)
你必须使用if,否则如果要避免输入每个if ::
if (a[i] == 2) {
a[i] = 4;
}
else if (a[i]==4) {
a[i] = 8;
}
else if (a[i]==8) {
a[i]=2;
}
答案 3 :(得分:0)
您真的不需要第二个for-loop
,您可以使用三元运营商这样动态执行此操作:
import java.io.IOException;
import java.util.Scanner;
public class Prob8Array {
static int n, i;
public static void main(String[] args) throws IOException {
Scanner reader = new Scanner(System.in);
System.out.println("Nr of array elements:");
n = reader.nextInt();
System.out.println("Array elements:");
int[] a = new int[n];
for(i = 0;i < n; i++) {
int value = reader.nextInt();
a[i] = (value==2)? 4 : (value==4)? 8 : (value==8)? 2 : value;
}
reader.close();
for (i=0; i<n; i++) System.out.println(a[i]);
}
}
<强>测试强>