2016-04-30 9 views
1

私は異なるクラスの2つの異なる配列を比較しようとしています.1つはユーザが入力した数字で、もう1つはランダムに比較します。しかし、私はそれらを比較するために私のコンストラクタクラスに入るためにユーザーからの数字でいっぱいだったものを得ることができません。ここ はコードです:私の配列を別のクラスに渡すことができません

import java.util.Scanner; 

class LotteryTester{ 

    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     int[] Picks = new int [5]; 
     System.out.println("Introduce your numbers here: "); 

     for(int i = 0; i < Picks.length; i++) 
     { 
      Picks[i] = input.nextInt(); 
     } 

     for (int i = 0; i < Picks.length; i++) 
     { 
      System.out.println(Picks); 
     } 
    } 
} 

そしてここでは、最初の配列を見つけることができないクラスです。

import java.util.Random; 
    public class Lottery 
    { 
     Random random = new Random(); 
     int number; 
     int count; 
    public Lottery() 
    { 
     int lotteryNums[] = new int[5]; 
     for (int i=0; i < lotteryNums.length; i++) 
     { 
      number = random.nextInt(10); 
      lotteryNums[i] = number; 
     } 
    } 

    public static int CompareNums(Picks[] numbers) 
    { 
     for (int i=0; i <Picks.length; i++) 
     { 
      if (Picks[i] == lotteryNums[i]) 
      { 
       System.out.println("The number on " + (i+1)+ " matches"); 
       count++; 
      } 
      else 
      { 
        System.out.println("the number on " + (i+1)+ " matches"); 
       } 
      } 
      return count; 
     } 
} 

私はただのメソッドを使用する方法を得ることはありません正しく

+0

ここで、「Lottery.CompareNums()」を呼び出していますか? –

+0

私は実際に私がオブジェクトを呼び出すはずだったことを知らなかった、私はそれがそれを参照した同じオブジェクト名を使用すると仮定した。 –

+0

これを実行するにはメソッドを呼び出す必要があります。あなたの主な方法は現在、それを呼び出すことはありません。 –

答えて

2

あなたはlotteryNumをコンストラクタの外部の変数に割り当てることは決してありません。メソッドが終了すると、その中で宣言されたすべての変数にはアクセスできなくなります。あなたの主な方法は、次の論理に従うように変更することができ

public class Lottery 
{ 
    Random random = new Random(); 
    int number; 
    int count; 
    int lotteryNums[]; 
    public Lottery() 
    { 
     lotteryNums[] = new int[5]; //Set the variable in the class so we can use it later 
     for (int i=0; i < lotteryNums.length; i++) 
     { 
      number = random.nextInt(10); 
      lotteryNums[i] = number; 
     } 
    } 

    public int CompareNums(Picks[] numbers) //Removed static since numbers are made in a constructor. All non-static class variables wouldn't be accessible otherwise. 
    { 
     for (int i=0; i <Picks.length; i++) 
     { 
      if (Picks[i] == lotteryNums[i]) 
      { 
       System.out.println("The number on " + (i+1)+ " matches"); 
       count++; 
      } 
      else 
      { 
       System.out.println("the number on " + (i+1)+ " matches"); 
      } 
     } 
     return count; 
    } 
} 

あなたのクラスは次のようになります。当選番号を生成 :

Lottery lottery = new Lottery(); 

を次に、その番号をユーザーに尋ねます。 最後に、数字を当選番号と照合して、ユーザーが勝ったかどうかを確認します。

if (lottery.CompareNums(lotteryNums) == 5) System.out.println("You Won!"); 
0

あなたは実際に余分なクラスなしでこれを行うことができ、arrayListsは良いでしょう。

これを試してみて、私が行ったことを示すコメントを残しました。

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


public class CompareArrayLists { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     ArrayList<Integer> userNums = new ArrayList(); 
     ArrayList<Integer> randNums = new ArrayList(); 
     Random random = new Random(); 

     Scanner cin = new Scanner(System.in); 
     int num = 0; 
     for (int i = 0; i < 5; i++) //let a user enter 5 numbers and generate 5 at the same time 
     { 
      System.out.print("Please enter your " + (i+1) + " number >"); 
      num = cin.nextInt(); 
      userNums.add(num); 
      num = random.nextInt(10); 
      randNums.add(num); 
     } 
     num = 0; 
     for (int j : userNums)//test each item in userNums to see if matches in randNums 
     { 
      if (!(randNums.contains(j))) 
       num++;//increment nums if something doesn't match 
     } 
     if (num > 0)//not a match if nums increments, you could also print nums to see how many are correct 
      System.out.println("Not a match"); 
     else 
      System.out.println("a match"); 



    } 
+0

ありがとう、私はほとんど問題なく同じクラスでそれを行うことができますが、私は方法の要点を得るために別のクラスでそれを行う方法を学ぼうとしていますが、私は理解していないようです方法を呼び出す方法 –

関連する問題