2016-11-07 3 views
0

Я пытаюсь создать программу, которая запрашивает использование для min и max и length массива, и в зависимости от пользовательского ввода max и min (int или double) он создаст массив int или double. Проблема с моим кодом заключается в том, когда я пытаюсь запустить его, компилятор говорит, что переменные не были инициализированы. Я предполагаю, что лучше сделать перегруженный метод, но я не уверен, как это сделать.Java-make int array или double array

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"); 

    } 
} 

ответ

-1

Вы настроите в min и max переменные внутри в if отчетности. Вне области действия инструкции if вы не можете получить доступ к переменным, которые были инициализированы внутри.

+0

Это должен был быть комментарий –

+0

Проблема в том, что если я инициализирую ее вне моей инструкции if, она будет ограничена только одним типом переменной, либо int, либо double. – Aria

+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, но если y ou должны были генерировать массив для удвоений между двумя числами, тогда у вас будет бесконечное количество значений.

Чтобы сделать все правильно, я предлагаю вам написать свой собственный класс, который расширяет Number, для простоты конструктор вашего класса может принять значение boolen, чтобы сказать, является ли он двойным или int.

+0

Проблема заключается в том, что, как вы можете видеть, я использую перегруженный метод public static void arrayReturn (int max, int min) { System.out.println («Это вернет« + max + »min:« + min + »в INT "); } public static void arrayReturn (double max, double min) { System.out.println ("Это вернет" + max + "min:" + min + "в double"); } – Aria

+0

Да, я предлагаю вам создать свой собственный класс, который расширяет число https://docs.oracle.com/javase/7/docs/api/java/lang/Number.html –