在列出我的数组中的所有元素后,我如何摆脱出现的零?
how do i get rid of the zero that shows up after all my elements in my array are listed?
我必须编写一个程序来打印出一个数组的元素,该数组的元素向后填充了随机数,但它也会在我的变量之后打印出一个零?我认为这与我的 for 循环有关,但我每次尝试更改它们时都会收到 java.lang.ArrayIndexOutOfBoundsException
错误。
编辑: 我还注意到第一个打印元素始终为零。我真的不认为这是个问题,但可能是什么原因造成的?
import java.util.*;
public class EZD_printBackwards
{
static int vars[] = new int[10];
static int backwards()
{
Random rand = new Random();
int bkwds = vars[0];
for (int a = 0; a < 10; a++)
{
vars[a] = rand.nextInt(100)+1;
}
for (int x = 10; x > 0; x--)
{
System.out.println("Element " + x + " is " + vars[x] );
}
return bkwds;
}
public static void main(String Args[])
{
int option;
Scanner kbReader = new Scanner(System.in);
do
{
System.out.println(backwards());
System.out.print("Type 1 to run again. Type 0 to end the program.");
option = kbReader.nextInt();
while(option !=1 && option !=0)
{
if (option != 1 && option != 0)
{
System.out.print("Please enter 1 to run again or 0 to end the program.");
option = kbReader.nextInt();
}
}
}while(option==1);
System.out.println("");
}
}
在您的示例中,vars
的大小为 10。第二个 for 循环从索引 x = 10
开始,该索引大于 vars 的最后一个索引,因为数组索引从零开始。要解决此问题,您应该在 for 循环中使用此条件:
for (int x = vars.length -1; x >= 0; x--)
{
System.out.println("Element " + x + " is " + vars[x] );
}
你有两个问题:
FIRST => For循环越界
你想遍历 10 个元素,因此你的
for (int x = 10; x > 0; x--)
应该是
for (int x = 9; x >= 0; x--)
0..9 是 10 个元素,同样的事情也适用于
for (int a = 0; a < 10; a++)
到
for (int a = 0; a < 9; a++)
SECOND ==> 0 最后
那是因为你
System.out.println(backwards());
而不是
backwards();
您正在返回 "bkwds" 的值,并且您正在使用 vars[0] 初始化 "bkwds",我猜想在 java 中,编译器会初始化数组的所有值与 0 ,
换句话说,你的问题在 System.out.println(backwards());
用
删除它
backwards();
它应该可以工作!
EDIT
你的造型过界了要么换成这个
for (int a = 0; a < 10; a++)
或
这样做
for (int a = 9; a > 0; a--)
由于数组是从零开始索引的,因此更改为
System.out.println("Element " + x + " is " + vars[x-1] );
输出
Element 10 is 31
Element 9 is 63
Element 8 is 82
Element 7 is 46
Element 6 is 67
Element 5 is 24
Element 4 is 3
Element 3 is 27
Element 2 is 37
Element 1 is 13
编辑
并改变这个
System.out.println(backwards());
至
backwards();
由于该方法的return值没有用,没有使用,将此方法改为return void
您的数组范围是从 0 到 9(包括 9)。但是,您的 for 循环从 10 开始并下降到索引 1。它应该从 9 开始并下降到索引零。然而,这并不能解释打印随机 0!这些零的原因是您有一个 int bkwds,您在函数的开头将其设置为 vars[0]。但是,由于它没有被初始化,它将被设置为 0(int 的默认值)在你的 main 中,你在打印语句中调用函数,我想它会继续打印你 return :)
我必须编写一个程序来打印出一个数组的元素,该数组的元素向后填充了随机数,但它也会在我的变量之后打印出一个零?我认为这与我的 for 循环有关,但我每次尝试更改它们时都会收到 java.lang.ArrayIndexOutOfBoundsException
错误。
编辑: 我还注意到第一个打印元素始终为零。我真的不认为这是个问题,但可能是什么原因造成的?
import java.util.*;
public class EZD_printBackwards
{
static int vars[] = new int[10];
static int backwards()
{
Random rand = new Random();
int bkwds = vars[0];
for (int a = 0; a < 10; a++)
{
vars[a] = rand.nextInt(100)+1;
}
for (int x = 10; x > 0; x--)
{
System.out.println("Element " + x + " is " + vars[x] );
}
return bkwds;
}
public static void main(String Args[])
{
int option;
Scanner kbReader = new Scanner(System.in);
do
{
System.out.println(backwards());
System.out.print("Type 1 to run again. Type 0 to end the program.");
option = kbReader.nextInt();
while(option !=1 && option !=0)
{
if (option != 1 && option != 0)
{
System.out.print("Please enter 1 to run again or 0 to end the program.");
option = kbReader.nextInt();
}
}
}while(option==1);
System.out.println("");
}
}
在您的示例中,vars
的大小为 10。第二个 for 循环从索引 x = 10
开始,该索引大于 vars 的最后一个索引,因为数组索引从零开始。要解决此问题,您应该在 for 循环中使用此条件:
for (int x = vars.length -1; x >= 0; x--)
{
System.out.println("Element " + x + " is " + vars[x] );
}
你有两个问题:
FIRST => For循环越界
你想遍历 10 个元素,因此你的
for (int x = 10; x > 0; x--)
应该是
for (int x = 9; x >= 0; x--)
0..9 是 10 个元素,同样的事情也适用于
for (int a = 0; a < 10; a++)
到
for (int a = 0; a < 9; a++)
SECOND ==> 0 最后
那是因为你
System.out.println(backwards());
而不是
backwards();
您正在返回 "bkwds" 的值,并且您正在使用 vars[0] 初始化 "bkwds",我猜想在 java 中,编译器会初始化数组的所有值与 0 ,
换句话说,你的问题在 System.out.println(backwards());
用
删除它backwards();
它应该可以工作!
EDIT
你的造型过界了要么换成这个
for (int a = 0; a < 10; a++)
或 这样做
for (int a = 9; a > 0; a--)
由于数组是从零开始索引的,因此更改为
System.out.println("Element " + x + " is " + vars[x-1] );
输出
Element 10 is 31
Element 9 is 63
Element 8 is 82
Element 7 is 46
Element 6 is 67
Element 5 is 24
Element 4 is 3
Element 3 is 27
Element 2 is 37
Element 1 is 13
编辑
并改变这个
System.out.println(backwards());
至
backwards();
由于该方法的return值没有用,没有使用,将此方法改为return void
您的数组范围是从 0 到 9(包括 9)。但是,您的 for 循环从 10 开始并下降到索引 1。它应该从 9 开始并下降到索引零。然而,这并不能解释打印随机 0!这些零的原因是您有一个 int bkwds,您在函数的开头将其设置为 vars[0]。但是,由于它没有被初始化,它将被设置为 0(int 的默认值)在你的 main 中,你在打印语句中调用函数,我想它会继续打印你 return :)