Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图从另一个类的随机数打印出数组_Java_Arrays_Random - Fatal编程技术网

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

Java 试图从另一个类的随机数打印出数组,java,arrays,random,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.printl

我基本上已经完成了这段代码,但是当我在彩票类中打印出数组中的数字时,我得到了一堆看似胡言乱语的东西。我怎样才能解决这个问题

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;
    }
}
import java.util.Scanner;
公共类Hw5pr2
{
公共静态void main(字符串[]args)
{
扫描仪kb=新扫描仪(System.in);
int[]兰德=新int[5];
System.out.println(“请输入5个数字”);
for(int a=0;a
for(int a=0;a
您正在尝试打印整个数组。这就是它可能会显示引用的原因。您可以将数组存储在临时数组中并打印该数组的内容


您可以尝试这样做:

int[] winningNum = k.getArray();
for (int a = 0; a < winningNum.length; a++)
    System.out.print(winningNum[a] + ",");
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;
}
int[]winningNum=k.getArray();
对于(int a=0;a
试试下面的方法

System.out.print(“中奖号码是:”);
对于(int a=0;a

注意这里

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

for(inta=0;a当您打印出数组时,据我所知,它调用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]+",");
    }   
for(int a=0;a
需要注意的几件事:

正如其他人所提到的,如果要打印数组的元素,一种简单的方法是使用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(", ");
    }
System.out.print(“中奖号码是:”);
对于(int a=0;a
第二,假设您想查看用户的号码中有多少与彩票号码匹配,您的RanInput函数将不会按照您希望的方式运行。目前,它只检查输入的第n个号码是否与选择的第n个彩票号码匹配,这不太可能是真的。相反,您应该这样做:

int[] winningNum = k.getArray();
for (int a = 0; a < winningNum.length; a++)
    System.out.print(winningNum[a] + ",");
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;
}
public int-RanInput(int[]Inran)
{
整数计数=0;

对于(int i=0;i当你说你“得到一堆胡言乱语”时,请随意向我们展示该输出。此外,该代码可以进行一些人性化的缩进,因为你要求其他人查看它。帮助那些人。正如用户3437460在下面指出的,我猜“胡言乱语”是
k.getArray()的内存地址
行中的
System.out.print(k.getArray()+“,”);
。并非所有对象都知道如何以漂亮的方式打印自己:S…仍然,向我们展示了“胡言乱语”这样我们就不用猜了。我实现了你说的和建议的内容,但现在我在识别随机彩票数组中的最后一个数字时遇到了问题。有什么建议吗?你有什么错误吗?我对上面发布的代码进行了编辑,在第二个for循环中,它应该是“int j=0”而不是“int j=I”.没有错误。这只是我注意到的问题,但似乎解决了问题。谢谢。好吧,那么,我的回答是否有助于完全解决您的问题,或者您是否仍不清楚?仅此而已。您的回答帮助我澄清了一切。谢谢您的帮助!