【问题标题】:Accessing Strings in other methods created by JOptionPane?在 JOptionPane 创建的其他方法中访问字符串?
【发布时间】:2014-03-23 19:05:44
【问题描述】:

我正在尝试在另一个 JOptionPane 中使用由 JOptionPane 创建的字符串。我尝试将字符串设为全局。我这样做对吗?

import javax.swing.JOptionPane;


public class Dialogue
{
    public static String reason = "";
    public static void main(String[] args)
{
    ask();
    JOptionPane.showInputDialog("You're here because: " + reason);
}

public static void ask()
{
    String reason = JOptionPane.showInputDialog("Why are you here?");
}
} 

【问题讨论】:

    标签: java string variables methods joptionpane


    【解决方案1】:

    在此声明中:

    String reason = JOptionPane.showInputDialog("Why are you here?");
    

    您正在创建一个新的String。所以全局变量和这个变量引用的不是同一个String。

    这样做:

    reason = JOptionPane.showInputDialog("Why are you here?");
    

    这样你就可以随意使用全局变量了。



    编辑: 我猜你在问他为什么在那里之后不想要用户输入,所以我猜你想切换这个:

    JOptionPane.showInputDialog("You're here because: " + reason);
    

    到这里

    JOptionPane.showMessageDialog(null, "You're here because: " + reason);
    

    这样,它只是给出一个信息,而不是等待用户输入。

    【讨论】:

    • 谢谢。我等待输入的原因是因为我不知道如何在消息对话框后继续。之后我会要求另一个输入吗?
    【解决方案2】:

    从ask 方法中删除String(因为这样做你正在创建一个新的局部变量reason)

    保持原样

    reason = JOptionPane.showInputDialog("Why are you here?");
    

    【讨论】:

    • 很高兴为您提供帮助 :)
    【解决方案3】:

    字符串reason被声明为全局静态变量,所以不需要重新定义ask ()方法

    public class Dialogue
    {
        public static String reason = "";
        public static void main(String[] args)
    {
        ask();
        JOptionPane.showInputDialog("You're here because: " + reason);
    }
    
    public static void ask()
    {
         reason = JOptionPane.showInputDialog("Why are you here?");
    }
    } 
    

    【讨论】:

      猜你喜欢
      • 2011-11-19
      • 2019-04-22
      • 2016-05-26
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多