从用户输入停止并打印数组

时间:2015-01-21 19:35:18

标签: java arrays

我是java编程的新手,正在进行一项练习,用户将int输入到数组中,然后通过输入负int值来停止用户输入。一切都很好,除了数组在用户输入之外输出0。因此,如果用户输入5个值然后输入一个负值,则只打印五个值而不是用户输入值和95个。

非常感谢任何协助。

这是我的代码:

public static void main (String str[]) throws IOException {
      Scanner scan = new Scanner (System.in);
      int array[] = new int [100];

      System.out.println ("Enter values up to  100 values, " +
      "enter a negative number to quit");
      for (int i=0; i< array.length; i++)
      {
        array[i] = scan.nextInt();

        if (array [i] < 0)
        {
          break;
        }

      }

      for (int i =0; i<array.length; i++)
      {
        System.out.println(array[i]);
      }
}

3 个答案:

答案 0 :(得分:0)

无论最后一个循环是什么,你都会循环100次,无论输入什么,你都在保存用户输入。

为了实现你想要的。声明一个新的整数enteredValues来计算用户在退出之前输入的值。

public static void main(String str[]) throws IOException {
    Scanner scan = new Scanner(System. in );
    int array[] = new int[100];

    System.out.println("Enter values up to  100 values, " +
        "enter a negative number to quit");

    int enteredValues = 0;
    for (int i = 0; i < array.length; i++) {
        int userInput = scan.nextInt(); //save nextInt to a variable
        if (userInput >= 0) {
            array[i] = userInput;
            enteredValues++;
        } else{
            break;
        }
    }

    for (int i = 0; i < enteredValues; i++) {
        System.out.println(array[i]);
    }
}

答案 1 :(得分:0)

当您在int中声明Java时,如果您没有为其指定值,则默认为0。声明数组时,

int array[] = new int [100];

你实际上是在制作一个100 0的数组。您可以通过运行以下代码来查看一个小示例:

public static void main(String[] args) throws Exception {

    int array[] = new int [1];
    System.out.println("The value of i is: " + array[0]);

}

您可以做的是将负值存储到数组中,然后在达到该值时停止打印。

for (int i =0; i<array.length; i++){
    if(array[i]<0){
        break;
    }
    System.out.println(array[i]);
}

答案 2 :(得分:0)

 public static void main (String str[]) throws IOException {
        Scanner scan = new Scanner (System.in);
        int array[] = new int [100];
        int totalValuesEntered = 0;
        System.out.println ("Enter values up to  100 values, " +
                "enter a negative number to quit");
        for (int i=0; i< array.length; i++)
        {
            array[i] = scan.nextInt();
            if (array[i] < 0)
            {
                totalValuesEntered = i;
                break;
            }

        }

        System.out.println("Your entries are:");
        for (int i =0; i<totalValuesEntered; i++)
        {
            System.out.println(array[i]);
        }
    }