在为我的选项对话框创建变量时获取Java错误

时间:2016-08-20 20:12:07

标签: java swing

package hellojava;
import javax.swing.JOptionPane;

/**
 *
 * @author Samira
 */
public class HelloJava {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String name, surname, message;

        JOptionPane.showMessageDialog( null, "Hello!");
        name= JOptionPane.showInputDialog("What is your first name?");
        surname= JOptionPane.showInputDialog("What is your last name?");

        JOptionPane.showMessageDialog(null, "Please select the appropriate age"
          + " for joining Java Programming", "Information", JOptionPane.PLAIN_MESSAGE);


        Object[] options= {"Age 18-21", "Age 22+"};
        int userage= JOptionPane.showOptionDialog(null, "How old are you?",
            "An Age Question",
            JOptionPane.YES_NO_OPTION,
            JOptionPane.QUESTION_MESSAGE,
            null,
            options,
            options[1]);

        message= String.format("Welcome" + name + " " + surname + " to Java Programming!");

        JOptionPane.showMessageDialog(null, message);
    }//end main
}//end class HelloJava

这是代码,我在第18行收到错误

1 个答案:

答案 0 :(得分:5)

我尝试使用您的代码创建一个空的Java项目。我从编译器得到的是以下警告:"未使用局部变量userage的值"。

首先,此消息是警告消息,而不是错误。它们之间的区别在于错误会阻止代码编译,而当有警告消息时代码将编译。但是,警告提示仍然可能存在问题,因为程序的行为通常可能不是所希望的。

在您的情况下,编译器检测到您声明了变量" userage",但正如我们所看到的,此变量以后从未使用过,因此声明它不能用于任何目的。如果您以后实际使用此变量,例如执行布尔条件来验证年龄,或将其保存到文件中,或者只是使用JOptionPane输出它,那么编译器将检测到您正在使用该变量并赢得& #39;认为这个变量没用。

例如,尝试在声明" userage"之后添加此行:

    JOptionPane.showMessageDialog(null, "You selected the choice options[" + Integer.toString(userage) + "].");

这将输出您的变量的值,该值表示您的"选项"中的选择选项的索引。数组,所以现在将使用该变量。

此外,在发布问题时,正如Niek T.提到的那样,它确实有助于添加您拥有的所有信息:问题是什么,您从编译器获得的确切信息,启动程序时会发生什么,这样,帮助者可以更快地回答,因为他们不需要用你的代码创建一个项目,就像我一样。

为了进一步阅读,我发现类似的主题有相同的问题: How to fix java warning for "The value of the local variable is not used "