java数组和输出
我刚开始用java编程,所以请原谅我愚蠢的错误。我的问题是,我的代码没有给出我想要的输出,即显示数组中的所有偶数值,然后显示数组中的所有不均匀值。这是我的代码:
//main class
public class Even_number_array
{
public static void main(String[] args)
{
array_class obj = new array_class();
obj.set_numbers();
}
}
//another class
public class array_class
{
private int arr[] =
{
10, 20, 7, 8, 3, 6, 11, 9, 7, 45
};
public void set_numbers()
{
for (int i = 0; i <= arr.length; i++)
{
if (arr[i] % 2 == 0)
{
System.out.println("These even numbers were found in the array:");
do
{
System.out.println(arr[i]);
i++;
}
while (arr[i] % 2 == 0);
}
else if (arr[i] % 2 != 0)
{
System.out.println("uneven numbers found in array:");
do
{
System.out.println(arr[i]);
i++;
}
while (arr[i] % 2 != 0);
}
}
}
}
这是我的输出(使用Netbeans IDE,它显示了我的错误,我之所以包括这些错误,是因为我不太明白它的意思。):
These even numbers were found in the array:
10
20
These even numbers were found in the array:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
8
These even numbers were found in the array:
6
uneven numbers found in array:
9
7
45
at even_number_array.array_class.set_numbers(array_class.java:35)
at even_number_array.Even_number_array.main(Even_number_array.java:12)
Java Result: 1
我有几个问题,为什么我的数组中的数字8不是用10和20打印,而6像8一样单独打印?还有,有没有一种方法可以让我使用Scanner类为数组获取用户输入,我该如何做呢
欢迎任何帮助!提前感谢:)
# 1 楼答案
For loop应该是<;不是<;=
将这段代码放入主方法并执行。我希望这能帮助你解决问题
# 2 楼答案
回答你的问题: “为什么我的数组中的数字8不能用10和20打印,而6像8一样单独打印?”
这是因为你的两个循环系统(对于+do-while)。例如,当你用i=1打印“20”时,你会做一个i++,给出i=2和arr[i]=7。此时,您的while arr[i]%2==0,当然还有7%2!=0所以退出do while循环,返回for,再执行一次i++操作,给出i=3,然后再次转到if:在本例中,您从未打印过值arr[2]=7,然后再次打印“这些偶数在数组中找到:”值arr[3]=8
我希望解释清楚。没有白板,很难解释算法;)
PS:+1表示“for循环在本例中应为<;而非<;=”
# 3 楼答案
如果我理解你的问题——以及你想要什么。最简单的解决方案(我明白了)是循环两次