"变量可能没有初始化。"声明的数组变量发生错误

时间:2014-09-09 12:19:02

标签: java arrays compiler-errors

我编写了下面的代码来获取整数序列作为输入,并根据用户给出的位置编号k将它们分成两部分。大于指定数字的数字将添加到列表中,其他数字将添加到另一个列表中。

此处'当我运行程序Variable nums might not have been initialized时,会显示编译时错误。谁能给出一个解决方案。

(因为我是初学者,我在命令提示符下运行java程序)

如果您提供替代方案,请解释为何会发生这种情况。

import java.util.*;
import java.util.Scanner;

class StringSplit{
public static void main(String args[]){
        Scanner input=new Scanner(System.in);
        List<Integer> part1=new ArrayList<Integer>();
        List<Integer> part2=new ArrayList<Integer>();
        int k,point=0;
        int nums[];         //Declaring variable

        System.out.print("\nEnter the point of split : ");
        k=input.nextInt();

        boolean correct=false;
        String numbers;
        System.out.print("\nEnter the number list : ");
        numbers=input.nextLine();
        String numlist[]=numbers.split(" ");

        nums=new int[numlist.length];       //Declaring the size
        for(int i=0;i<numlist.length;i++){
                nums[i]=Integer.parseInt(numlist[i]);    //Assigning values to the array
        }   


        point=nums[k-1];
        for(int x=0;x<nums.length-1;x++){
                if(nums[x]>point)   part1.add(nums[x]);
                else    part2.add(nums[x]);
        }

        System.out.print("\nPart 1 : ");
        for(int i:part1){
                System.out.print(" "+i);
        }   

        System.out.print("\nPart 2 : ");
        for(int j:part2){
                System.out.print(" "+j);
        }   

}
}

4 个答案:

答案 0 :(得分:1)

应初始化局部变量在使用变量之前

因此,将初始值赋给变量k。例如。

int k = 0;

但是你已经有了这条线 -

k=input.nextInt();

你不应该得到错误。

如果您对此行发表评论,则会在

处收到错误消息
point=nums[k-1]; 

您正在使用变量。

答案 1 :(得分:0)

请重新检查代码,因为我无法重现并获得相同的错误。

检查是否所有局部变量都已初始化。在您给定的代码中,它已初始化。但请检查您在此处分享的代码。

答案 2 :(得分:0)

在您真正需要时声明局部变量。在这种情况下:

int nums[] = new int[numlist.length];

在循环之前。

答案 3 :(得分:0)

您必须将nums声明为:

int nums[] = new int[taille] ;