2016-02-22 2 views
-1

Im в настоящее время находится в процессе создания программы и хранит данные, и я столкнулся с проблемой, когда она дважды печатает заявление и считает его двумя в массиве (его трудно объяснить так плохо показать)Имея странную проблему с массивом

так это код

public static void GetData() 
    { 
    Scanner input = new Scanner(System.in); 
    System.out.println("How many names do you want to enter?"); 
       int num = input.nextInt(); 
       int array[] = new int[num]; 
       for (int i = 0 ; i < array.length ; i++) 
        { 
         String[] names = new String[num]; 


         System.out.println("enter employee's name: "); 

         names[i] = input.nextLine(); 
        } 
       for(int j = 0; j < array.length;j++) 
        { 
        double[] payrate = new double[num]; 
        System.out.println("enter employee's payrate: "); 

        payrate[j] = input.nextDouble(); 
        } 

    } 

} 

проблемы является его распечатывания:

How many names do you want to enter? 
4 
enter employee's name: 
enter employee's name: 
harry 
enter employee's name: 
larry 
enter employee's name: 
mary 
enter employee's payrate: 

дважды сразу так, когда пользователь декларирует пусть говорит массив размер 4, он будет печатать это дважды, и он будет считать, что в качестве двух пятен уже сейчас он учитывает только 3 данных и переключается на следующий массив, я честно не уверен, что вызывает это, я попытался отладить его но он ничего мне не говорит, любая помощь будет любима!

+0

'nextInt()' оставляет символ новой строки на 'input'. Первая 'nextLine()' захватывает эту новую строку. – forgivenson

ответ

0

Первый names[i] = input.nextLine(); будет читать \n из строки, содержащей номер, который вы читаете с input.nextInt(), так что вы получите пустое имя.

Вы можете прочитать num следующим образом:

String strNum = input.nextLine(); 
int num = Integer.parseInt(strNum); 
+0

есть ли способ исправить это? – kyle

+0

@kyle Я добавил возможное решение для своего сообщения. –

Смежные вопросы