-2

In the program if I enter 0 it exits, the problem is when I am trying to print the array afterwards there will be alot of 0 if I choose to exit. How do I prevent that being print.

package lu.ics.Sohail.labbar;

import java.util.Arrays;
import java.util.Scanner;

public class November2012 {
    public static void main(String[] args) {
        int tal;
        int summa=0;
        Scanner input = new Scanner(System.in);
        int [] array = new int [100];
        int min = Integer.MAX_VALUE;
        int max = 0;

        for (int i=0 ; i<array.length; i++ ){
            System.out.print("Ange tal 0 avsluta");
            array[i] = input.nextInt();
            summa =summa+array[i];
            if (array[i]==0) {
                break;
            }
            while(array[i]<min)
            { 
                min=array[i];
            }
            while(array[i]>max)
            { 
                max=array[i];
            }
        }

        System.out.print("Talen är " + Arrays.toString(array));    
        System.out.println();
        System.out.print("Summan är " + summa);
        System.out.println();
        System.out.print("Max är " + max);
        System.out.println();
        System.out.print("Min är " + min);
    }
}
4

4 回答 4

0

使用 ingeter 数组。但是当您打印数组时,这将打印 null 。添加条件以在打印时不这样做。

package com.prasad.samples.views;

import java.util.Arrays;
import java.util.Scanner;

public class November2012 {
    public static void main(String[] args) {
        int tal;
        int summa=0;
        Scanner input = new Scanner(System.in);
        Integer [] array = new Integer [100];
        System.out.println(array[0]);
        int min = Integer.MAX_VALUE;
        int max = 0;

        for (int i=0 ; i<array.length; i++ ){
            System.out.print("Ange tal 0 avsluta");
            array[i] = input.nextInt();
            summa =summa+array[i];
            if (array[i]==0) {
                break;
            }
            while(array[i]<min)
            { 
                min=array[i];
            }
            while(array[i]>max)
            { 
                max=array[i];
            }
        }

        System.out.print("ar " + Arrays.toString(array));    
        System.out.println();
        System.out.print("summan ar " + summa);
        System.out.println();
        System.out.print("Max ar " + max);
        System.out.println();
        System.out.print("Min ar " + min);
    }
}
于 2013-10-21T12:46:51.373 回答
0

对于此调用中的每个项目,数组的其余部分已初始化为 0:

int [] array = new int [100];

然后当0检测到第一个时,它会中断for循环并打印所有内容。

于 2013-10-21T12:34:12.067 回答
0

您需要使用自己的大小创建数组。在创建数组时分配了 100 个静态内存,所有值都分配为 0。

 System.out.print("Enter the array size");
 int arraySize = input.nextInt();
 int [] array = new int [arraySize];

否则用于 ArrayList<Integer>存储数字

于 2013-10-21T12:34:57.907 回答
0

我想我现在明白了。

int [] array = new int [100];将创建一个包含 100 个整数的数组,并且每个元素都使用值 0 进行初始化(这是 的默认值int)。因此,当您打印数组时,将打印 100 个数字,无论它们是否为 0。

你有几个选择:

  • 使用 a List<Integer>,这样列表只包含在第一个 0 之前输入的数字。
  • 循环打印并在第一个 0 或数组末尾中断。
  • (可选)您可能希望计算已输入的数字数量,例如用于计算平均值等。这可用于迭代数组中的前 n 个元素。

话虽如此,我建议使用列表,因为这样会更灵活。

于 2013-10-21T12:35:13.463 回答