2013-03-28 4 views
0

Ссылки на уступки: http://i.imgur.com/fc86hG9.pngпринимая пользовательский ввод для массива

У меня немного проблемы взыскательной как принять ряд чисел и применять их в массив без цикла. Не только это, но у меня есть немного проблем, сравнивая их. То, что я написал до сих пор:

import java.util.Scanner; 

public class Lottery { 

public static void main(String[] args) { 
int userInputs[] = new int[5]; 
int lotteryNumbers [] = new int[5]; 
int matchedNumbers =0; 
char repeatLottery = '\0'; 


    Scanner in = new Scanner (System.in); 

    do{ 
     System.out.println("Enter your 5 single-digit lottery numbers.\n (Use the spacebar to separate digits): "); 
      for(int i = 0; i <5; i++) 
      userInputs[i] = in.nextInt(); 

      System.out.println("Your inputs: "); 
      printArray(userInputs); 

     System.out.println("\nLottery Numbers: "); 
     readIn(lotteryNumbers); 
     for(int i=0; i<5; i++) { 
      System.out.print(lotteryNumbers[i] + " "); 
     } 

     matchedNumbers = compareArr(userInputs, lotteryNumbers); 

     System.out.println("\n\nYou matched " + matchedNumbers + " numbers"); 



     System.out.println("\nDo you wish to play again?(Enter Y or N): "); 
     repeatLottery = in.next().charAt(0); 
    } 
    while (repeatLottery == 'Y' || repeatLottery == 'y'); 

} 
public static void printArray(int arr[]){ 

    int n = arr.length; 

    for (int i = 0; i < n; i++) { 
     System.out.print(arr[i] + " "); 
    } 
} 

public static void readIn(int[] List) { 
    for(int j=0; j<List.length; j++) { 
     List[j] = (int) (Math.random()*10); 
    } 
} 

public static int compareArr (int[] list1, int[] list2) { 
    int same = 0; 
    for (int i = 0; i <= list1.length-1; i++) { 
     for(int j = 0; j <= list2.length-1; j++) { 
      if (list1[i] == list2[j]) { 
       same++; 


      } 

     } 
    } 
    return same; 
} 

}

Как вы можете заметить, я закомментирована входной линии, потому что я не совсем уверен, как справиться с этим. Если у меня есть их в массиве, я бы смог сравнить их довольно легко, я думаю. Это наши первые массивы обработки присваивания, и я думаю, что это кажется немного углубленным, поскольку у него есть только один класс-период; Итак, простите мое невежество. : P

Edit:

Я добавил новый метод в конце, чтобы сравнить цифры, но проблема в том, что сравнивает их в-общем, а не от позиции к позиции. Сейчас это главный вопрос.

+0

Отмеченная часть должна быть уже правильной способ ее написать? Затем прокрутите и сравните два массива. – Patashu

+0

Значит, вам не разрешено использовать цикл for для установки значений массива? Это так? Неясно, каков ваш вопрос. – ktm5124

ответ

1

Ваш вопрос не на 100% ясный, но я постараюсь изо всех сил. 1- я не видит никаких проблем с чтением вводом от пользователя

int[] userInput = new int[5]; // maybe here you had a mistake 
int[] lotterryArray = new int[5]; // and here you were declaring your arrays in a wrong way 
Scanner scanner = new Scanner(system.in); 
for (int i = 0 ; i < 5 ; i++) 
{ 
userInput[i] = scanner.nextInt(); 
} // this will populate your array try to print it to make sure 

редактирования: важно в ссылке, которую вы поделились о назначении сравниваемого необходимо проверить значение и местоположение, так что если есть два 5 один в введите один в лотерее, они должны находиться в том же месте, чтобы проверить назначение снова

// to compare 
int result = 0 ; // this will be the number of matched digits 
for (int i = 0 ; i < 5 ; i++) 
{ 
    if (userInput[i] == loterryArray[i]) 
     result++ 
} 
// in this comparsion if the digits are equale in value and location result will be incremented 
+0

Сравнение сработало. Я создал метод int, который вернул результат. Спасибо! – TheFoundry

+0

Редактировать: important ,,,,,, в ссылке, которую вы поделили о назначении, нужно сравнить, чтобы проверить значение и местоположение, поэтому, если есть два 5 одного входа в лотерее, они должны находиться в одном месте, проверьте назначение снова –

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