我应该创建并初始化一个100个元素的数组,然后使第7个元素成为数字“7”,最后打印数组,每20个元素开始一个新行。我一直在努力解决这个问题,但我不能。
我现在的代码是:
public class Array {
public static void main(String args[]) {
int [] array = new int[100];
for (int a = 0; a < array.length; a++) {
if (array[a] == 6) {
array[a]=7;
array[a] = a + 1;
}
printArray(array);
}
}
public static void printArray(int[] array){
for (int a=0; a < array.length; a++) {
System.out.print(" " + array[a]);
if ((a - 1) % 20 == 0) {
System.out.println("");
}
}
}
}
当我运行它时,我的输出是很多零,远远超过100.它们按预期每20个字符分隔,但第七个元素不是7.我认为它与int“a之间的关联有关“和我的阵列,但我无法弄清楚。我知道解决方案必须简单,但我无法看到它。谢谢大家!
答案 0 :(得分:1)
正确缩进代码,特别是main
方法,可以揭示正在发生的事情。您正在printArray
循环中调用for
,因此您将打印数组内容100次。
for (int a = 0; a < array.length; a++) {
if (array[a] == 6) {
array[a]=7;
array[a] = a + 1;
}
printArray(array);
}
在printArray
循环的}
结束括号之后将调用移至for
。
现在你将获得100 0
秒。
此外,如果索引不是array[a] = a + 1;
,我认为你的意思是执行6
,例如
if (array[a] == 6) {
array[a] = 7;
} else {
array[a] = a + 1;
}
此外,您需要在20个数字后打印换行符,例如在索引19
,39
等之后,在计算余数之前将1
添加到a
,而不是减去1
,以便{{1} },其余数为19 + 1 = 20
。
答案 1 :(得分:0)
有很多事情是错的。但是,要回答您的问题,您将打印阵列100次,因为printArray位于您的第一个循环中。
答案 2 :(得分:0)
您在主方法中错误地放置了一个结束括号。格式正确的方法如下所示:
public static void main(String args[]) {
int [] array = new int[100];
for (int a = 0; a < array.length; a++) {
if (array[a] == 6) {
array[a]=7;
}
array[a] = a + 1;
}
printArray(array);
}
答案 3 :(得分:0)
首先,您的代码组织得非常糟糕,因此您很容易错过那里的内容。你有2个重大错误,首先你叫printArray()
在你的for循环内,因此打印100次。
其次,您一直在检查索引a
中数组内的值是否为6。
您需要检查a
是否为6,因为它是您的索引:
if(a == 6)
array[a] = 7;
答案 4 :(得分:0)
好吧,我运行了你的代码,还有一些地方可以纠正。
至于你打印的很多东西的问题,那是因为你把你的printarray()放在for循环中,所以它打印了100次这个数组。
至于打印出来,我觉得这段代码更简洁:
public static void printArray(int[] array){
int counter = 0;
for(int i = 0; i < array.length; i++){
System.out.print(array[i] + " ");
counter++;
if(counter == 20){
counter = 0;
System.out.print("\n");
}
}
}
另外,我不确定你为什么要使用for循环来改变第7个元素。你可以用这个:
array[6] = 7;
我不确定你在for循环中做了什么。
我希望这有帮助!祝你好运!