2016-11-17 4 views
0

Меня попросили реализовать программу лотереи. Код выглядит следующим образом ..Соответствующие номера массивов по столбцу

Scanner keyIn = new Scanner(System.in); 
Random randomGenerator = new Random(); 

int numDigits = 6, randomNum; 
int[] userNum = new int[numDigits]; 
int[] lotteryNumbers = new int[numDigits]; 
for (int i = 0; i < 6; i++) { 
    randomNum = (int) (Math.random() * 45); 
    for (int x = 0; x < i; x++) { 
     if (lotteryNumbers[x] == randomNum || lotteryNumbers[x] == 0) { 
      randomNum = (int) (Math.random() * 45); 
      x = -1; 
     } 
    } 
    lotteryNumbers[i] = randomNum; 
} 

for (int i = 0; i < userNum.length; i++) { 
    System.out.print("Enter your numbers: "); 
    userNum[i] = keyIn.nextInt(); 
    System.out.println("Your number is: " + userNum[i]); 
    System.out.println(" "); 
} 
keyIn.close(); 

System.out.println("You've entered the following numbers..."); 
System.out.println(Arrays.toString(userNum)); 

System.out.println(" "); 
System.out.println("The lottery numbers are: "); 
for (int i = 0; i < 6; i++) { 
    Arrays.sort(lotteryNumbers); 
    System.out.print(+lotteryNumbers[i] + " "); 
} 

Revision Question 9

Я пытаюсь реализовать соответствующую часть вопроса, но я столкнулся с некоторыми проблемами, она просит меня искать совпадения в столбцах, а не строк.
Мне нужно знать, как проверить соответствие номеров в столбце.
Моя попытка.

for(int i = 0; i < 6; i++){ 
for(int j = 0; j < 6; j++) 
{ 
if(lotteryNumbers[i] == userNum[j]) 
{ 
match++; 
} 
} 
} 
System.out.println(" "); 
System.out.print("Matches: " +match +" found."); 

Но это выглядит для матчей в строках, я хотел бы сделать это так, он ищет соответствия по столбцам

+0

Пожалуйста, покажите, что вы пробовали и где вы застряли – RobAu

+0

Что вы пробовали, и какие проблемы вы нашли? Вы знаете, что переполнение стека не означает, что сайт «сделай мою домашнюю работу». Вы должны проявить определенные усилия с вашей стороны. – walen

+0

Отредактировано, спасибо. – Mano

ответ

1
for(int i=0;i<6;i++){ 
     for(int j=i;j<6;j++){ 
      if(userNum[i]==lotterNumbers[j]){ 
       System.out.println("match found: "+userNum[i]); 
      } 
     } 
    } 

этот код выглядит, если у вас есть совпадающие номера в пользовательском вводе и случайном числе и если это так печатает соответствует найдено + номер

массив как строку: 1|2|3|4|5|6|7

массив в качестве колонки:

1 

2 

3 

4 

5 

6 

, если вы посмотрите на массив как строку вы подходите по столбцам иначе по строкам

+0

Спасибо за помощь! Это ищет совпадения по строкам, у меня тоже это было, но мне нужно, чтобы они искали совпадения по столбцам – Mano

+0

, вы используете обычные массивы. есть только столбцы или строки, в зависимости от того, как вы на это смотрите. – XtremeBaumer

+0

Вы правы, я закончил использование Array.sort(); для сортировки ввода пользователя и розыгрыша лотереи. Спасибо за вашу помощь! – Mano

0

Самое лучшее, что вы можете сделать, это использовать HashMap.

Первая вставка как <column number, value in that column> для 1-го ряда.

Затем используйте get(), чтобы получить значение, хранящееся в этом столбце. Затем просто проверьте значение второй строки с тем, что вы получили от get().

Код:

import java.util.HashMap; 
import java.util.Map; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     int matched = 0,num; 

     Map<Integer,Integer> hm = new HashMap<Integer,Integer>(); 
     int[] numbersDrawn = {1,3,4,17,23,45}; 
     int[] yourNumbers = {1,2,3,19,23,41}; 

     for(int i = 0; i<numbersDrawn.length ; i++) 
     { 
      hm.put(i,numbersDrawn[i]); 
     } 

     for(int i=0 ; i<yourNumbers.length ; i++) 
     { 
      num = hm.get(i); 

      if(num == yourNumbers[i]) 
      { 
       matched++; 
      } 
     } 
     System.out.println(matched); 
    } 
} 
0
List<Integer> list = IntStream.range(1, 5001).boxed().collect(Collectors.toList()); 

Collections.shuffle(list); 

System.out.println(list.subList(0, 6)); 
0

Не верьте пользователям. Они могут вводить дубликаты записей.

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Random; 
import java.util.Scanner; 
import java.util.TreeSet; 


public class Test { 

    public static void main(String args[]) { 

     Scanner keyIn = new Scanner(System.in); 
     Random randomGenerator = new Random(); 

     int numDigits = 6, randomNum; 
     TreeSet<Integer> usernum = new TreeSet<>(); 
     int[] lotteryNumbers = new int[numDigits]; 
     ArrayList<Integer> matches = new ArrayList<>(); 

     for(int i = 0;i < 6; i++){ 
      randomNum = (int)(Math.random() * 45); 
      for(int x = 0; x < i; x++){ 
       if(lotteryNumbers[x] == randomNum || lotteryNumbers[x] == 0) 
       { 
        randomNum = (int)(Math.random() * 45); 
        x =-1; 
       } 
      } 
      lotteryNumbers[i] = randomNum; 
     } 

     Arrays.sort(lotteryNumbers); 

     System.out.println("Enter your numbers: "); 
     for(int i = 0; i < numDigits; i++){ 
      boolean wasAdded = usernum.add(keyIn.nextInt()); 
      if(wasAdded == false) { 
       System.out.println("Duplicate entries are disallowed!"); 
       i--; 
      } 
     } 

     keyIn.close(); 

     System.out.print("You've entered the following numbers : "); 
     System.out.println(usernum.toString().replaceAll("\\[|\\]|,", "")); 

     System.out.println(); 
     System.out.print("The lottery numbers are: "); 

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

     int iteration = 0; 
     for (int entry : usernum) { 
      if(entry == lotteryNumbers[iteration]) { 
       matches.add(entry); 
      } 
      iteration++; 
     } 

     System.out.println("\n"); 
     System.out.println("Numbers matched : " + matches.size()); 

    } 

} 

enter image description here

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