【问题标题】:Little trouble in compiling java编译java的小麻烦
【发布时间】:2015-10-07 14:20:57
【问题描述】:

我在尝试编译控制台游戏时遇到问题,控制台向我显示

线程“main”java.lang.Error 中的异常:未解决的编译问题:在 Pytania.main(Pytania.java:6)

第 6 行是 public static void main(String[] args),遗憾的是我没有看到失败 :(

我用的是 Eclipse,谢谢你的回答 :)

import java.util.Scanner;

public class Pytania{


public static void main(String[] args){

    String Elf = ("Elf");
    String Kot = ("Kot");
    String Wojownik = ("Wojownik");
    String Lucznik = ("Lucznik");

    Scanner pisz = new Scanner(System.in);

    System.out.println("---------------------------------");
    System.out.println("----------RPG--TALES-------------");
    System.out.println("------------Part 1---------------");
    System.out.println("---------------------------------");
    System.out.println(" ");
    System.out.println("Pamietaj, pisz poprawnie, inaczej mutanty wysadza gre! :D ");
    System.out.println(" ");
    System.out.println("Podaj nazwe uzytkownika");
    String nazwa = pisz.nextLine();
    System.out.println("Witaj " + nazwa + " w nowym symulatorze RPG, nastepnym krokiem bedzie wybranie klasy, wybierz klase z dostepnych ponizej");
    System.out.println("Elf, Kot, Wojownik, Lucznik");
    String postac = pisz.nextLine();
    System.out.println("Gratulacje " + nazwa + ", Wybrales klase " + postac);





    if (postac=="Elf"){

        return postac = Elf;


    }


}

这对我有很大帮助,谢谢! :)

【问题讨论】:

  • 你觉得return postac = Elf;应该怎么做(记住你还在public static void main(String[] args)方法中)
  • 关于您的下一个问题,为什么if (postac=="Elf") 不起作用:How do I compare strings in Java?
  • 当您尝试编译 某些东西时,您不会遇到异常——您会遇到编译错误。当您尝试运行代码时会发生异常。在编译之前不要运行它 - 虽然存在编译错误,但它们应该比您提供的更具描述性......
  • Postac 使用我的语言“名称”,所以我想如果用户将从列表 System.out.println("Elf, Kot, Wojownik, Lucznik") 中编写可用的类;以 Elf 为例,它将返回他的类 //return postac = Elf;然后当我写 postac 时,它会在 println 的最后一行自动将文本更改为“Elf”,对不起我的英语不好:/
  • 实际上“Postac”看起来更像“Profession”(zajęcie/klasa),所以你应该这样命名它:)无论如何return不是你想要使用的动作。您可能应该创建单独的类,例如MyCharacter,在其中您将拥有种族、姓名、HP 和其他一些统计信息的字段(您还需要添加 getter 和 setter)。然后你可以创建像MyCharacter mc = new MyCharacter();这样的类的实例,并使用像mc.setProfession(profesja)这样的东西来存储来自用户的数据。当您需要它时,请使用mc.getProfession()

标签: java compiler-errors compiler-warnings


【解决方案1】:

你也可以把你的equals方法改成这样:

static String equals(String postac)
{


    switch(postac)
    {
        case "Elf": postac = "Elf"; 
            break;
        case "Kot": postac = "Kot";
            break; 
        case "Wojownik": postac = "Wojownik";
            break;
        case "Lucznik": postac = "Lucznik";
            break;

    }
         return postac;
}

然后你可以在你的最终声明中调用它,就像:

 System.out.println("Gratulacje " + nazwa + ", Wybrales klase " + equals(postac));

【讨论】:

  • 抱歉,检查postac 是否有一些价值以及它是否分配了与它已经拥有的相同的价值有什么意义?您的意思可能是 postac = Elf; 而不是 postac = "Elf"(注意引号)。
  • 只是展示如何创建单独方法的示例。你的观点是正确的。
【解决方案2】:

您必须在末尾添加另一个} 才能关闭类定义。

此外,您不能在 void 方法中使用 return 语句。

【讨论】:

  • 如果它解决了您的问题,您可以接受答案。
  • 实际上有关印刷错误的问题在 Stack Overflow 上是题外话,因此应该关闭(这种情况可能会被删除)。 IMO 帮助 OP 并让其他人保持高质量 SO 的最佳选择是向 cmets 等问题发布建议,而不是答案。答案的问题是,如果问题将被关闭,如果有接受的答案或答案为正分,则无法自动删除。也不要担心声誉,关于 SO 有很多有趣的问题,轻松获得代表感觉并不好。
  • 谢谢大家,我还是新手,这是我使用本网站的第一天,非常感谢您提供这么多信息:)
猜你喜欢
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多