我的java数组覆盖现有元素

时间:2016-04-17 01:53:38

标签: java arrays

所以我对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();   

      }
    }
}

2 个答案:

答案 0 :(得分:1)

在循环内部,你需要递增n,因为它总是为0.使用:n ++;在while循环内的最后一行代码。

答案 1 :(得分:0)

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