[英]Java- making int array or double array
我正在尝试制作一个程序,要求使用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");
}
}
如果在大括号中声明变量,例如
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的类,为简单起见,该类的构造函数可以使用布尔值来表示它是double还是int。
您已经在if
语句中初始化了min
和max
变量。 在if
语句的范围之外,您无法访问在其中初始化的变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.