加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 从另一个类检索int时获取null

发布时间:2020-12-15 04:14:28 所属栏目:Java 来源:网络整理
导读:基本上我做了这个程序,计算机生成随机卡.我创建了一个名为’rndnumber’的类,这个类生成随机数.然后,我创建了另一个名为’rndsuits’的类,这会生成随机套装. 问题是当我去我的主类,并执行代码时,我得到的是null而不是数字和套装.谁知道为什么?我的输出基本
基本上我做了这个程序,计算机生成随机卡.我创建了一个名为’rndnumber’的类,这个类生成随机数.然后,我创建了另一个名为’rndsuits’的类,这会生成随机套装.
问题是当我去我的主类,并执行代码时,我得到的是null而不是数字和套装.谁知道为什么?我的输出基本上是:
这是你的随机卡:null null.

public class maincard { 

public static void main(String[] args){

    System.out.println("Here is your random card");

    rndnumber h = new rndnumber();
    rndsuit a = new rndsuit();


    System.out.println(h.getString() + " of " + a.getStringz());

}

}


public class rndnumber {

private int rndnumber = (int) (Math.random()*13+1);
private String number;

public String getString(){
    return number;
}


public void rnd(){
    switch (rndnumber){
    case 1:
        number = "Ace";
        break;
    case 2:
        number = "2";
        break;
    case 3:
        number = "3";
        break;
    case 4:
        number = "4";
        break;
    case 5:
        number = "5";
        break;
    case 6:
        number = "6";
        break;
    case 7:
        number = "7";
        break;
    case 8:
        number = "8";
        break;
    case 9:
        number = "9";
        break;
    case 10:
        number = "10";
        break;
    case 11:
        number = "Jacks";
        break;
    case 12:
        number = "Queens";
        break;
    case 13:
        number = "Kings";
        break;
    }

}   
}


public class rndsuit {

private int y = (int) (Math.random()*3+1);
private String rndsuit;

public String getStringz(){
return rndsuit;
}



public void suit(){
    switch(y){
    case 1:
        rndsuit = "Spades";
        break;
    case 2:
        rndsuit = "Cloves";
        break;
    case 3:
        rndsuit = "Hearts";
        break;
    case 4:
        rndsuit = "Diamonds";
        break;
    }
}
}

解决方法

您需要在获取值之前调用方法.

h.rnd();
a.suit();
System.out.println(h.getString() + " of " + a.getStringz());

这将解决null问题.

但是还有另外一个问题在休息室等你.除非您反复创建新对象并使用该对象访问值,否则上述修复将始终返回相同的值.

你需要在rnd()和suit()这样的方法中移动随机生成器部分,以便始终返回新的随机值.

public void suit() {
    y = (int) (Math.random() * 3 + 1);
    ...
}

public void rnd() {
    rndnumber = (int) (Math.random() * 13 + 1);
    ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读