这段代码是如何工作的? (JAVA)

时间:2016-11-20 12:51:43

标签: java random int

我有程序,其中4个随机数设置为4个按钮(每个按钮一个号码)。有两个随机变量(rbvalue和loadG4)。每个按钮的rbvalue编号不同,但loadG4值会覆盖按钮的值并替换它。这个想法是,没有一个rbvalue数字等于loadG4,并且程序的一部分确保它们永远不相等。这是代码:

Random GenerateG4 = new Random();
            int loadG4 = GenerateG4.nextInt(10);
            Random randoms1 = new Random();
            final TextView number = (TextView) findViewById(R.id.number);
            number.setText(""+loadG4);
            for(int allrbA=0; allrbA<4; allrbA++) {
                int rbvalue = randoms1.nextInt(10 - 1);
                if (rbvalue==loadG4) rbvalue=9;
                selectrb[allrbA].setText(""+rbvalue);
            }
            selectrb[rbselector].setText(""+loadG4);

使这项工作的部分是:

if (rbvalue==loadG4) rbvalue=9;

只需添加该行代码即可完成工作。现在,从0到9生成的所有数字中,只有一个是loadG4的值。这一行是怎么做到的?我一直认为在if (...)之后必须有实际语句的大括号,例如if(...){System.out.println(&#34; ...&#34;)}为什么设置rbvalue到9?为什么随机rb值有(10 -1)?在这种情况下,-1甚至意味着什么?

我很感激能为我解决这个问题的人,谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将10 - 1作为小学数学,它等于9,因此randoms1.nextInt(10 - 1)会返回0到8之间的数字。我不知道为什么它不是9。可能是试图强调该值比GenerateG4.nextInt(10)中使用的值小1。

if条件为真时,只执行一条语句时,大括号是一个意见问题。很多人喜欢把它们放在那里;在我的工作场所,任何人都不会离开他们。

如果if语句等于rbvalue,则loadG4语句将rbvalue设置为9。这将确保价值观不同。由于rbvalue最多为8,我们知道当它们相等时,将它们中的一个设置为9将确保它们变得不同。对我的口味来说有点微妙,我知道你需要问。

代码似乎无法使每个按钮的import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsManager; import android.telephony.SmsMessage; import android.util.Log; import android.widget.Toast; public class IncomingSms extends BroadcastReceiver { // Get the object of SmsManager final SmsManager sms = SmsManager.getDefault(); @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub final Bundle bundle = intent.getExtras(); try { if (bundle != null) { final Object[] pdusObj = (Object[]) bundle.get("pdus"); for (int i = 0; i < pdusObj.length; i++) { SmsMessage currentMessage = SmsMessage .createFromPdu((byte[]) pdusObj[i]); String phoneNumber = currentMessage .getDisplayOriginatingAddress(); String senderNum = phoneNumber; String message = currentMessage.getDisplayMessageBody(); Log.i("SmsReciver", "senderNum: " + senderNum + ", message: " + message); } // end of for loop } // bundle } catch (Exception e) { // TODO: handle exception Log.e("SmsReciver", "Exception smsReciver" + e); } } } 数字不同。