如何在Java中初始化数组?

时间:2014-12-31 09:02:32

标签: java

这是我在java中的代码。 System.out.println(averager(A));出现问题。 Java表示局部变量A可能尚未初始化。

import java.util.Scanner;

public class Averager {

    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("How many numbers do you want to average?(2-4 only");
        int x;
        int[] A;
        x = input.nextInt();
        int Array4[]={input.nextInt(),input.nextInt(),input.nextInt(),input.nextInt()};
        int Array3[]={input.nextInt(),input.nextInt(),input.nextInt()};
        int Array2[]={input.nextInt(),input.nextInt()};
        if (x=='2'){
            A =Array2;
        }   
        else if (x=='3'){
            A = Array3;
        }
        else if (x=='4'){
            A= Array4;                  
        }
        else{
            System.out.println("Error!");
        }           
        System.out.println(averager(A)); // Error
    }


    public static int averager(int...numbers){
        int total=0;
        for(int x:numbers){
            total+=x;
         }
           return total/numbers.length;         
        }               
    }

5 个答案:

答案 0 :(得分:6)

查看您的代码,并考虑如果x不是'2''3''4'会发生什么。

A是什么
System.out.println(averager(A));

线?

右键!你从来没有给它一个价值。这就是编译器警告你的内容。

答案 1 :(得分:0)

java中的数组可以初始化= null,因为如果代码没有输入if语句,则永远不会设置A.此外,如果您已经知道数组的尺寸,您可以像这样初始化它:

int[] A = new int[numberofelements];

答案 2 :(得分:0)

你的代码错了。

它总是从STDIN读取9(4 + 3 + 2)个数字(在Array4到Array2部分)。

你想做的可能是

    int x = input.nextInt();
    int[] A = new int[x];
    for ( int i = 0; i < x; ++i ) A[i] = input.nextInt();

但是如果你只想解决“局部变量A可能尚未初始化”。警告,打印错误后返回(结束程序)

    else {
        System.out.println("Error!");
        return;
    }

答案 3 :(得分:0)

您可以将代码更改为

        int x = input.nextInt();
        int[] A= new int[x];

答案 4 :(得分:-1)

更改:int [] A = null;

int x更改为int x = 0;。您需要在java中初始化变量。