Java 随机数未初始化

Java 随机数未初始化,java,android,random,Java,Android,Random,我这里有这个代码: Random rand = new Random(); int randomNum; int i; String[] text1 = getResources().getStringArray(R.array.text1); String[] text2 = getResources().getStringArray(R.array.text2); for(i = 0; i < ((MAX - 1)^(MAX - 1

我这里有这个代码:

    Random rand = new Random();
    int randomNum;
    int i;
    String[] text1 = getResources().getStringArray(R.array.text1);
    String[] text2 = getResources().getStringArray(R.array.text2);



    for(i = 0; i < ((MAX - 1)^(MAX - 1)); i++) {
        randomNum = rand.nextInt(2);
        // True wenn bereits angezeigt worden
        if(shown_table.get(randomNum)) {
            continue;
        }
        // False wenn noch nicht angezeigt worden
        else {
            break;
        }
    }

    // Texte anzeigen und Shown table auf true setzen.
    txt_text1.setText(text1[randomNum]);
    txt_text2.setText(text2[randomNum]);
    //shown_table.put(randomNum, true);
当我把“randomNum=rand.nextInt(2);”放在循环之前时,它会工作。。。但那不是我想要的

你知道为什么吗


ps:我对编码不太熟悉

编译器无法从代码中保证'randomNum'将被初始化,因为for循环可能是空的。这就是为什么行
txt_text1.setText(text1[randomNum])不应编译


如果您确信执行将始终进入循环,请使用任何大致合理的值初始化它,例如
int randomNum=0

编译器无法从代码中保证“randomNum”将被初始化,因为for循环可能为空。这就是为什么行
txt_text1.setText(text1[randomNum])不应编译


如果您确信执行将始终进入循环,请使用任何大致合理的值初始化它,例如
int randomNum=0

XOR的属性是:对于所有x,x^x==0。因此表达式
(MAX-1)^(MAX-1)
的计算结果总是为零,并且您的代码永远不会进入循环


但这不是问题所在。编译器总是假定循环可能永远不会执行,并且它抱怨在这种情况下,
randomNum
在用作数组下标时将不会被初始化。

XOR的属性是:对于所有x,x^x==0。因此表达式
(MAX-1)^(MAX-1)
的计算结果总是为零,并且您的代码永远不会进入循环


但这不是问题所在。编译器总是假设循环可能永远不会执行,并抱怨在这种情况下,当它用作数组下标时,
randomNum
不会被初始化。

^
不应该在Java中计算幂集。是XOR<代码>^
不应在Java中计算幂集。是XOR。感谢您提供的这些信息,但现在我遇到了这个问题:
无法启动activity ComponentInfo{com.example.alex.wouldYou按Button/com.example.alex.wouldYou按Button.main活动}:java.lang.nullpointer异常:尝试调用虚拟方法'java.lang.Object java.util.Hashtable.get(java.lang.Object)“在一个空对象引用上,
@mrminemete它看起来像是
显示的表
是空的。@mrminemete看一看:@HiI'mfrogato是的……这是因为表中的空值。当我想把一些东西放到我的表中时,它不会工作……我在
onCreate
显示的表中添加了它。put(1,true)
我用它来创建hashtable
公共hashtable show\u table;
@mrminemete您只是声明一个hashtable类型的变量,但您必须实际创建一个实例。类似于
Map show\u table=new hashtable()
谢谢您提供这些信息,但现在我遇到了一个问题:
无法启动活动组件信息{com.example.alex.wouldYou按按钮/com.example.alex.wouldYou按按钮.main活动}:java.lang.nullpointer异常:尝试调用虚拟方法'java.lang.Object java.util.Hashtable.get(java.lang.Object)'在一个空对象引用上
@mrminemete它看起来像是显示的表
是空的。@mrminemete看一看:@HiI'mfrogato是的……这是因为表中的空值。当我想把一些东西放进我的表中时,它就不起作用了……我在
onCreate
显示的表中添加了它。put(1,true)
我用它来创建hashtable
公共hashtable show\u table;
@mrminemete您只是声明一个hashtable类型的变量,但您必须实际创建一个实例。类似于
Map show\u table=new hashtable()
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
Error:(118, 33) error: variable randomNum might not have been initialized