在Java中如何用特定字符串替换数组中的所有倍数
我有一个这样的整数数组在Java中如何用特定字符串替换数组中的所有倍数,java,arrays,Java,Arrays,我有一个这样的整数数组 for (int i = 0; i <= n; i++) { if ((i % 3 == 0) || (i % 5 != 0)) { arr[i] = 'AB'; } else if ((i % 3 != 0) || (i % 5 == 0)) { arr[i] = 'CD'; } else if ((i % 3 == 0) || (i %
for (int i = 0; i <= n; i++) {
if ((i % 3 == 0) || (i % 5 != 0)) {
arr[i] = 'AB';
}
else if ((i % 3 != 0) || (i % 5 == 0)) {
arr[i] = 'CD';
}
else if ((i % 3 == 0) || (i % 5 == 0)) {
arr[i] = 'ABCD';
}
}
int[]arr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
现在我想将3的每一个倍数(但不是5的倍数)更改为'AB',将5的每一个倍数(但不是3的倍数)更改为'CD',将3和5的每一个倍数更改为'ABCD'
我想要一个动态的解决方案,它可以用于任何数量的数组元素-解决方案应该站在不考虑大小
我试着这样做
for (int i = 0; i <= n; i++) {
if ((i % 3 == 0) || (i % 5 != 0)) {
arr[i] = 'AB';
}
else if ((i % 3 != 0) || (i % 5 == 0)) {
arr[i] = 'CD';
}
else if ((i % 3 == 0) || (i % 5 == 0)) {
arr[i] = 'ABCD';
}
}
for(inti=0;i这看起来是的一个修改版本。有几个错误,我可以马上发现
if ((i % 3 == 0) || (i % 5 != 0)) {
在上面的代码片段中,您正在检查i
(for循环的迭代器)是3
和5
的倍数。但是,您需要检查位于i
位置的数组元素是否是3
或5
的倍数。为此,您可以将上述代码段更改为以下内容:
if ((arr[i] % 3 == 0) || (arr[i] % 5 != 0)) {
接下来,您的条件似乎不正确。您要检查位置i
处的元素是否是3的倍数,并且位置i
处的元素是否不是5的倍数。为此,应使用&
而不是|
,如下所示:
if ((arr[i] % 3 == 0) && (arr[i] % 5 != 0)) {
最后,您试图将多个字符存储到单个char
值中,这在Java中是不可能的。如果需要使用多个字符,则应使用String
。但是,您将无法在int[]中存储String
,因此您需要创建一个字符串[]
:
String[] newArray = new String[arr.length];
for (int i = 0; i <= n; i++) {
if ((arr[i] % 3 == 0) && (arr[i] % 5 != 0)) {
newArray[i] = "AB";
} else if ((arr[i] % 3 != 0) && (arr[i] % 5 == 0)) {
newArray[i] = "CD";
} else if ((arr[i] % 3 == 0) && (arr[i] % 5 == 0)) {
newArray[i] = "ABCD";
} else {
newArray[i] = Integer.toString(arr[i]);
}
}
产生预期输出的:
[1, 2, AB, 4, CD, AB, 7, 8, AB, CD, 11, AB, 13, 14, ABCD, 16, 17, AB, 19, CD]
这看起来是一个修改版本的。有几个错误,我可以当场发现
if ((i % 3 == 0) || (i % 5 != 0)) {
在上面的代码片段中,您正在检查i
(for循环的迭代器)是3
和5
的倍数。但是,您需要检查位于i
位置的数组元素是否是3
或5
的倍数。为此,您可以将上述代码段更改为以下内容:
if ((arr[i] % 3 == 0) || (arr[i] % 5 != 0)) {
接下来,您的条件似乎不正确。您要检查位置i
处的元素是否是3的倍数,并且位置i
处的元素是否不是5的倍数。为此,应使用&
而不是|
,如下所示:
if ((arr[i] % 3 == 0) && (arr[i] % 5 != 0)) {
最后,您试图将多个字符存储到单个char
值中,这在Java中是不可能的。如果需要使用多个字符,则应使用String
。但是,您将无法在int[]中存储String
,因此您需要创建一个字符串[]
:
String[] newArray = new String[arr.length];
for (int i = 0; i <= n; i++) {
if ((arr[i] % 3 == 0) && (arr[i] % 5 != 0)) {
newArray[i] = "AB";
} else if ((arr[i] % 3 != 0) && (arr[i] % 5 == 0)) {
newArray[i] = "CD";
} else if ((arr[i] % 3 == 0) && (arr[i] % 5 == 0)) {
newArray[i] = "ABCD";
} else {
newArray[i] = Integer.toString(arr[i]);
}
}
产生预期输出的:
[1, 2, AB, 4, CD, AB, 7, 8, AB, CD, 11, AB, 13, 14, ABCD, 16, 17, AB, 19, CD]
int[]
可以保存int
值。Achar
是一种整数类型。问题是'AB'
是两个字符,因此不是有效字符。您考虑过'C'
吗?@Elliott Frisch我想将3的每一个倍数(但不是5的倍数)更改为'AB',5的每一个倍数((但不是3的倍数)to'CD'&3和5到'ABCDAnint[]
的每一个倍数都可以容纳int
值。char
是一个整数类型。问题是'AB'
是两个字符,因此不是有效字符。您考虑过'C'
吗?@Elliott Frisch我想更改3的每一个倍数(但不是5的倍数)到'AB',每5的倍数((但不是3的倍数)到'CD',每3和5的倍数到'ABCDHi',我把这个问题改了一点。你现在可以检查一下吗?@tommy123我编辑了我的答案,以适应对你的问题所做的修改。System.out.println(Arrays.toString(newArray));当打印这行时,我在线程“main”java.lang.ArrayIndexOutOfBoundsException:20在第六个问题中遇到异常。替换(第六个问题。java:40)在第六个问题中。在第六个问题中的sumofMultiple(第六个问题。java:34)在第六个问题。main(第六个问题。java:57)该异常不是由于打印数组造成的。我建议您阅读:好的,我最初使用了arr.length。我必须使用arr.length-1Hi我对问题做了一些更改。您现在可以检查吗?@tommy123我编辑了我的答案,以适应对您的问题.System.out.println(Arrays.toString(newArray))所做的修改;当打印这行时,我在线程“main”java.lang.ArrayIndexOutOfBoundsException:20在第六个问题中遇到异常。替换(第六个问题。java:40)在第六个问题中。在第六个问题中的sumofMultiple(第六个问题。java:34)在第六个问题。main(第六个问题。java:57)该异常不是由于打印数组造成的。我建议您阅读:好的,我得到了它,我最初采用了arr.length。我必须采用arr.length-1