如何从其他方法访问String?

时间:2014-11-12 21:45:25

标签: java

我正在尝试制作神奇宝贝类型的游戏来测试我的新手编码技巧。但是我遇到了一些问题。

如果我按原样运行程序,我会得到一个弹出2次攻击的窗口(Tackle和Thunder Shock)。点击一次即可解决问题,但需要点击Thunder Shock两次;我猜这是因为pikaAtkType()同时用于if。

我需要将方法中的“拾取”字符串与消息框进行比较,以使其正常工作。

我的问题是,我如何从pikaAtkType()方法访问“pick”并将其放入if语句中,这样我就可以比较消息框输入,而不必按两次“OK”来进行Thunder Shock。 (我想以一种简单的方式做到这一点;我不是最好的编码。)

if (Encounter().equals("Attack")) {
    if (pikaAtkType().equals("Tackle")) {
        pikaDMG = 3;
    } else if (pikaAtkType().equals("Thunder Shock")) {
        pikaDMG = 4;
    }
}

方法pikaAtkType()(请记住这些只是代码的一部分):

static String pikaAtkType() {
    String[] choices = {"Tackle", "Thunder Shock", "", ""};
    String picked = (String)JOptionPane.showInputDialog(
        null,
        "Select Attack: ",
        "Attack!",
        JOptionPane.QUESTION_MESSAGE,
        null,
        choices,
        choices[0]);
    return picked;
}

2 个答案:

答案 0 :(得分:3)

如果我理解你的问题,一个解决方案是获得"攻击"一次并将其存储在局部变量中。像,

if (Encounter ().equals ("Attack"))
{
  String attack = pikaAtkType (); 
  if (attack.equals ("Tackle"))
  {
    pikaDMG = 3;
  }
  else if (attack.equals ("Thunder Shock"))
  {
    pikaDMG = 4;
  }

答案 1 :(得分:0)

您可以在班级中创建一个等于拾取的字段

public class Pokemon {
    String picked = "";

    static void pikaAtkType ()
    {

        String[] choices = {"Tackle", "Thunder Shock", "", ""};
        String picked = (String) JOptionPane.showInputDialog (null, "Select Attack: ", "Attack!",     JOptionPane.QUESTION_MESSAGE, null, choices, choices [0]);
        this.picked = picked;
    }
}

然后你就去:

if (Encounter ().equals ("Attack")) {
    pickAtkType();
    if (picked.equals ("Tackle"))
    {
    pikaDMG = 3;
    }
    else if (picked.equals ("Thunder Shock"))
    {
    pikaDMG = 4;
    }