在列出我的数组中的所有元素后,我如何摆脱出现的零?

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 :)