Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.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_Class_Variables_Scope - Fatal编程技术网

Java 共享来自不同函数的变量

Java 共享来自不同函数的变量,java,class,variables,scope,Java,Class,Variables,Scope,我在stackoverflow上的第一篇帖子!我也开始学习Java。 我正在尝试构建一个程序,打印一个随机字母,然后它应该写以该字母开头的单词,并且它有一个类要验证 问题是,当我生成一个randomNum以从数组中获取randomLetter时,我不能与需要验证它的类共享randomNum变量 private void jButtonPlayActionPerformed(java.awt.event.ActionEvent evt) {

我在stackoverflow上的第一篇帖子!我也开始学习Java。 我正在尝试构建一个程序,打印一个随机字母,然后它应该写以该字母开头的单词,并且它有一个类要验证

问题是,当我生成一个randomNum以从数组中获取randomLetter时,我不能与需要验证它的类共享randomNum变量

private void jButtonPlayActionPerformed(java.awt.event.ActionEvent evt) {                                            

    int randomNum;

    randomNum = (int)(Math.random()*palavras.length);
    System.out.println(""+randomNum);


    jLabelRandom.setText(Introduce words that begins with : " + palavras[randomNum]);


}                                           

private void jButtonVerificarActionPerformed(java.awt.event.ActionEvent evt) {                                                 

    int certas = 0;

    String[] words = {jTextField1.getText(), jTextField2.getText(), jTextField3.getText(), jTextField4.getText(),
                      jTextField4.getText()};         

    for (String w : words){

        if(w.startsWith(Integer.ToString(palavras[randomNum]))){ // This variable can't be shared here, but I need it here :)
            certas++;
        }
}

     jLabelCertas.setText(Integer.toString(certas));
     words = null;

}                                                

public String[] palavras = {"a", "b", "c", "d", "e", "f", "g", "h", "i"};

问题是您将randomNum用作局部变量,而不是数据成员。看起来你把方法的概念和类的概念混合在一起了,阅读关于方法和类的内容是非常有用的。关于解决方案:

从jButtonPlayActionPerformed方法中删除此行:

取而代之的是,将randomNum定义为类内部但在方法外部的成员,如下所示:

private int randomNum;

private void jButtonPlayActionPerformed(java.awt.event.ActionEvent evt) {                                            

    randomNum = (int)(Math.random()*palavras.length);
    System.out.println(""+randomNum);


    jLabelRandom.setText(Introduce words that begins with : " + palavras[randomNum]);


}                                           

private void jButtonVerificarActionPerformed(java.awt.event.ActionEvent evt) {                                                 

    int certas = 0;

    String[] words = {jTextField1.getText(), jTextField2.getText(), jTextField3.getText(), jTextField4.getText(),
                      jTextField4.getText()};         

    for (String w : words){

        if(w.startsWith(Integer.ToString(palavras[randomNum]))){ // This variable can't be shared here, but I need it here :)
            certas++;
        }
}

     jLabelCertas.setText(Integer.toString(certas));
     words = null;

}                                                

public String[] palavras = {"a", "b", "c", "d", "e", "f", "g", "h", "i"};

使randomNum成为包含这些函数的类的私有实例变量。此外,标题有误导性:您不需要在类之间共享变量,而是在函数之间共享变量…palavras[randomNum]已经是字符串了!你不需要施放。@Ido谢谢你的帮助,也解决了这个问题,我对编程还是很新鲜。@Aero谢谢!完全忘记了。谢谢。这解决了问题!我会查一查我对编程还是很在行。我很乐意帮助你,古兹。你仍然应该阅读这些概念,以确保你的理论知识对你有所帮助。如果我的答案解决了你的问题,你可以接受它,这样也会帮助其他人,有类似的问题。我不知道我需要在哪里接受它,但现在它完成了。我还有一个疑问,也许你知道如何帮助我:ifw.endsWithpalavras[randomNum]->我还想添加参数equalsIgnoreCase,我该怎么做?endsWith区分大小写,但你将字符串转换为不区分大小写。如果要检查myString是否以不区分大小写的方式以后缀结尾,则可以将两个字符串转换为小写,如下所示:myString.toLowerCase.endsWithsuffix.toLowerCase。字符串的值不会更改,但无论使用何种大小写,toLowerCase都会以小写形式显示。因此,比较将是小写的,这正是您所需要的。
private int randomNum;

private void jButtonPlayActionPerformed(java.awt.event.ActionEvent evt) {                                            

    randomNum = (int)(Math.random()*palavras.length);
    System.out.println(""+randomNum);


    jLabelRandom.setText(Introduce words that begins with : " + palavras[randomNum]);


}                                           

private void jButtonVerificarActionPerformed(java.awt.event.ActionEvent evt) {                                                 

    int certas = 0;

    String[] words = {jTextField1.getText(), jTextField2.getText(), jTextField3.getText(), jTextField4.getText(),
                      jTextField4.getText()};         

    for (String w : words){

        if(w.startsWith(Integer.ToString(palavras[randomNum]))){ // This variable can't be shared here, but I need it here :)
            certas++;
        }
}

     jLabelCertas.setText(Integer.toString(certas));
     words = null;

}                                                

public String[] palavras = {"a", "b", "c", "d", "e", "f", "g", "h", "i"};