我的java数组覆盖现有元素



所以我对Java语言还比较陌生,但我正在努力变得更好,以便在简历中添加更多技能。我目前专注于阵列,我正在编写一个程序,我希望能够与条形码扫描仪或键盘一起使用,以跟踪文化丰富学分(受我学校需要的启发)。我认为这可能是一个很好的开始程序,可以让我了解数组的使用,但我对这两个数组有问题。它们不断覆盖输入的新值。我一直在谷歌上搜索和尝试一些东西,但我仍然无法让它们正常工作,我想向经验丰富的程序员寻求帮助。我知道我的输出方法相当懒惰,但它可以实现我希望看到的输出格式。

这是我的代码:

public static void main(String []args)throws InputMismatchException
{
    Scanner user_input = new Scanner( System.in );
    int n = 0; 
    String Name;
    int CEU;
    String[] users = new String[5];
    String[] numbers = new String[6];
    Object end = null;
    Object print = null;
    System.out.print("Enter value for CEU: ");
    CEU = user_input.nextInt();
    while (n >= 0)
    {          
      /* Loop*/
      System.out.println("Scan ID or type  **end,print** ");
      numbers[n] = user_input.next();
      if ("end".equals(users[n] ))
      {
        System.out.print("Program terminated.");
        System.exit(0);
      }
      if ("print".equals(numbers[n]))         
      {
        System.out.print("CEUs: " + CEU);
        System.out.print(" ID#: " + numbers[0]);
        System.out.print(" Name: " + users[0]);
        System.out.print("nCEUs: " + CEU);
        System.out.print(" ID#: " + numbers[1]);
        System.out.print(" Name: " + users[1]);
        System.out.print("nCEUs: " + CEU);
        System.out.print(" ID#: " + numbers[2]);
        System.out.print(" Name: " + users[2]);
        System.out.print("nCEUs: " + CEU);
        System.out.print(" ID#: " + numbers[3]);
        System.out.print(" Name: " + users[3]);
        System.out.print("nCEUs: " + CEU);
        System.out.print(" ID#: " + numbers[4]);
        System.out.print(" Name: " + users[4]);
      }
      else 
      {
        System.out.print("Enter Name: ");
        users[n] = user_input.next();   
      }
    }
}

在循环中,您需要增加n,因为它总是0。使用:n++;在while循环内的最后一行代码处。

n没有递增。因为n永远不会改变,所以每次执行循环时,它都会覆盖数组的同一部分。此外,看起来你以后可能会出现界外错误,因为我会继续增加。很快它将大于数字数组的最大索引,因此它将返回错误。您应该尝试添加一些代码来阻止错误的发生。

最新更新