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