2016-11-17 15 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()を使用して、その列に格納されている値を取得します。次に、2行目の値を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

関連する問題