2016-11-17 66 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

你是對的,我結束了使用Arrays.sort();排序用戶輸入和抽獎彩票號碼。謝謝你的幫助! – Mano

0

你能做的最好的事情就是用HashMap

首先插入爲第一行的<column number, value in that column>

然後使用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