试图从另一个类的随机数打印出数组

时间:2014-11-13 18:18:20

标签: java arrays random

我基本完成了这段代码,但是当我在彩票课中打印出数组中的数字时,我得到了一堆看似乱码的东西。我该如何解决这个问题?

import java.util.Scanner;
public class Hw5pr2
{
    public static void main(String[] args)
    {
    Scanner kb = new Scanner(System.in);
    int[] rand = new int[5];
    System.out.println("please enter 5 number");
    for (int a = 0; a<rand.length; a++)
    {
    rand[a] = kb.nextInt();
    }
    Lottery k = new Lottery();
    System.out.print("your number are: ");
    for (int a = 0; a < rand.length; a++)
    {
        System.out.print(rand[a]+",");
    }
    System.out.print("The Winning numbers are: ");
    for (int a = 0; a < rand.length; a++)
    {
        System.out.print(k.getArray()+",");
    }
    System.out.println("you have " + k.RanInput(rand) + " matching number!!");
    }
}



import java.util.Random;
public class Lottery
{
private int[] lotteryNumbers = new int[5];
    public Lottery()
    {
    Random rand = new Random();
    for (int a = 0; a<lotteryNumbers.length; a++)
        {
        lotteryNumbers[a] = rand.nextInt(9)+1;
        }
    }
    public int RanInput(int[] Inran)
    {
    int b = 0;
    for (int a = 0; a<lotteryNumbers.length; a++)
        {
        if (lotteryNumbers[a] == Inran[a])
            {
            b++;
            }
        }
    return b;
    }
    public int[] getArray()
    {
    return lotteryNumbers;
    }
}

4 个答案:

答案 0 :(得分:1)

for (int a = 0; a < rand.length; a++)
{
    System.out.print(k.getArray()+","); //k.getArray() which returns you an entire array
}

您正在尝试打印整个阵列。这就是为什么它可能会向您显示参考。您可以将数组存储在临时数组中并打印该数组的内容。


您可以尝试这样做:

int[] winningNum = k.getArray();
for (int a = 0; a < winningNum.length; a++)
    System.out.print(winningNum[a] + ",");

答案 1 :(得分:0)

尝试类似

的内容

System.out.print("The Winning numbers are: "); for (int a = 0; a < rand.length; a++) { System.out.print(k.getArray()[a]+","); }

请注意

 for (int a = 0; a<lotteryNumbers.length; a++)
 {
    if (lotteryNumbers[a] == Inran[a])
    {
        b++;
    }
 }
 return b;

这总是返回lotteryNumbers.length-1;因为总是两个数组是相同的

答案 2 :(得分:0)

当你打印出数组时,据我所知,它调用了toString方法。 这将返回对象的哈希值,而不是它包含的值。您也可以从Arrays类调用静态方法toString来打印数组的字符串值。

        System.out.print(Arrays.toString(k.getArray())+",");

或使用for循环

for (int a = 0; a < k.getArray().length; a++)
    {
        System.out.print(k.getArray()[a]+",");
    }   

答案 3 :(得分:0)

有几点需要注意:

正如其他人所提到的,如果你想打印一个数组的元素,一个简单的方法是使用for循环。除非您分别访问k的lotteryNumbers数组中的每个元素,否则您的代码将无法以您希望的方式工作:

System.out.print("The winning numbers are: ");
for (int a = 0; a < rand.length; a++)
    {
        System.out.print(k.getArray()[a]); //make sure to include the [a]
        if(a != rand.length - 1)   //added to help make prints more readable
            System.out.print(", ");
    }

其次,您的RanInput功能不会按照您希望的方式运行,假设您想要查看有多少用户的号码与彩票号码匹配。目前,它仅检查输入的第n个数字是否与所选择的第n个乐透号码匹配,这不太可能是真的。相反,你应该做这样的事情:

public int RanInput(int[] Inran)
{
    int count = 0;
    for (int i = 0; i<lotteryNumbers.length; i++)
    {
        for(int j = 0; j < lotteryNumbers.length; j++) {
            if (lotteryNumbers[j] == Inran[i])
                {
                count++;
                }
        }
    }
    return count;
}

它将每个输入的数字与每个乐透号码进行比较。除了上面的代码之外,还有更有效的方法来做到这一点,但我认为它现在应该已经足够好了。

我不认为您用于生成彩票号码的代码是重复的(例如,数字可能是1,2,2,1,3),所以你应该解决这个问题。

最后,如果您想要彻底解决,请执行一些错误检查:

  • 确保用户输入正好5个数字
  • 所有正整数
  • 低于某个上限(例如,100)