Java制作int数组或双数组

时间:2016-11-07 04:21:59

标签: java arrays overloading

我试图制作一个程序,要求使用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");   

  }
}   

2 个答案:

答案 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语句中初始化了maxif个变量。在if语句范围之外,您无法访问已在其中初始化的变量。