【问题标题】:"Variable Might not have bee initialized." error occurs for a declared array variable“变量可能没有被初始化。”声明的数组变量发生错误
【发布时间】:2014-09-09 12:19:02
【问题描述】:

我编写了下面的代码来获取整数序列作为输入,并根据用户给出的位置编号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);
        }   

}
}

【问题讨论】:

  • 您确定发布了实际代码吗?如果是这样标记产生错误的行。 PS:我无法复制它。
  • 你确定这不起作用吗?
  • 在 OSX 上的 Java 1.8 上为我工作

标签: java arrays compiler-errors


【解决方案1】:

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

所以给变量k赋初值。例如

int k = 0;

但是你已经有了这条线-

k=input.nextInt();

你不应该得到错误。

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

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

你在哪里使用变量。

【讨论】:

  • 你试过上面的代码吗?我不认为这应该给 CTE
  • 由于这一行,您没有收到该错误 - k=input.nextInt();。评论这一行看看。
  • 现在编译时错误消失了,但是在第二个'input.nextLine()'之后有一个运行时错误。 ' 输入拆分点: 2 输入数字列表: 线程“main”中的异常 java.lang.NumberFormatExcepti on:对于输入字符串:“”在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在 java。 lang.Integer.parseInt(Integer.java:504) at java.lang.Integer.parseInt(Integer.java:527) at StringSplit.main(StringSplit.java:23) 可能是我电脑的错误 ois
【解决方案2】:

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

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

【讨论】:

  • 这应该是评论,而不是答案
【解决方案3】:

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

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

就在循环之前。

【讨论】:

    【解决方案4】:

    您必须将nums 声明为:

    int nums[] = new int[taille] ;
    

    【讨论】:

      猜你喜欢
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 2019-09-26
      • 2022-01-02
      相关资源
      最近更新 更多