我试图制作一个程序,要求使用min和max以及数组的长度,并根据max和min(int或double)的用户输入,它将创建一个int或double数组。我的代码的问题是当我尝试运行它时,编译器说变量尚未初始化。我假设制作重载方法更好,但我不确定如何。
import java.util.Scanner;
public class RandomGames{
public static void main(String [] args){
randomArray();
}//end of main
public static void randomArray(){
Scanner input = new Scanner(System.in);
System.out.println("Please enter the length of desired array: ");
int length = input.nextInt();
int [] randomNumbers = new int [length];
System.out.println("Please enter the highest number: ");
if (input.hasNextInt()){
int max = input.nextInt();
}
else if (input.hasNextDouble()){
double max = input.nextDouble();
}
System.out.println("Please enter the Lowest number: ");
if (input.hasNextInt()){
int min = input.nextInt();
}
else if (input.hasNextDouble()){
double min = input.nextDouble();
}
arrayReturn(max, min);
} //end of randomArray
public static void arrayReturn(int max, int min){
System.out.println("This will return "+max+"min :"+ min +"in int");
}
public static void arrayReturn(double max, double min){
System.out.println("This will return "+max+"min :"+ min +"in double");
}
}
答案 0 :(得分:2)
如果在花括号内声明变量,如
if (input.hasNextInt()){
int max = input.nextInt();
}
然后它们只在此范围内可见。
至少你需要改为
int max = 0;
if (input.hasNextInt()){
max = input.nextInt();
}
现在您正在为doubles
使用相同内容,然后可能为doubles
创建了一个新变量,例如
double maxD = 0.0;
else if (input.hasNextDouble()){
maxD = input.nextDouble();
}
注意强>
我不确定您生成arrays
的逻辑,但如果您要为两个数字之间的双精度生成数组,那么您将拥有无限数量的值。
为了正确地做事我建议您编写自己的扩展Number的类,为简单起见,类的构造函数可以使用boolen值来表示它是double还是int。
答案 1 :(得分:-1)
您已在min
语句中初始化了max
和if
个变量。在if
语句范围之外,您无法访问已在其中初始化的变量。