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

Java 为什么这些东西会出错?

Java 为什么这些东西会出错?,java,Java,我对Java非常陌生,我一直在使用它作为一种模板。我不知道我做错了什么,错误信息对我很有帮助 它说我需要至少10个声誉来发布图片,所以我必须将其复制粘贴到这里,并告诉您哪些图片带有下划线以及错误消息: import java.util.Random; **Error: the "." after util.** import java.util.Scanner; **Error: whole line underlined saying "Syntax error on token(s) m

我对Java非常陌生,我一直在使用它作为一种模板。我不知道我做错了什么,错误信息对我很有帮助

它说我需要至少10个声誉来发布图片,所以我必须将其复制粘贴到这里,并告诉您哪些图片带有下划线以及错误消息:

  import java.util.Random; **Error: the "." after util.**
import java.util.Scanner; **Error: whole line underlined saying "Syntax error on token(s) misplaced construct(s)**

public class game {
private static final String[] enemies = null;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Random rand = new Random();

String[] enemies = { "troll","rat","imp","goblin" };
int maxEnemyHealth = 80;
int enemyAttackDamage = 20;
int health = 100;
int playerAttackDamage = 30;
int numHealthPots = 3;
// int numStamimaPots = 3 (add stamina potions later on)
int healthPotionHeal = 20;
int healthPotionDropChance = 40; // 40%

boolean running = true;
System.out.println("Welcome, Dungeon Explorer!");

GAME:
while(running) {
System.out.println("-----------------------------------------------------");
}
}
private Scanner rand;
private int maxEnemyHealth;
int enemyHealth = rand.nextInt(maxEnemyHealth);
String enemy = enemies[rand.nextInt(enemies.length)];
System.out.println("\t#" + enemy + " attacked! #\n"); **Error: Everything after System.out is underlined red with the message: Syntax error on tokens, AnnotationName expected instead.**

while (enemyHealth > 0); { **Error: while, and the paranthesis after 0 is underlined red with the AnnotatioName message for while and Syntax error, insert ) to complete MethodDelcaration for the paranthesis** 
    System.out.println("HP:" + health);
    System.out.println("\t" + enemy + "'s +" " + HP: + " " + enemyHealth);
    System.out.println("\n\t What do you choose to do?" );
    System.out.println("\t Attack ");
    System.out.println("\t Health Potion");
    System.out.println("\t Run!");

    String input = in.nextLine();

帮助

第一个错误是由缺少的包声明创建的。要解决此问题,您可以将类移动到默认包(不推荐),也可以通过添加包声明

package x.y.z;
在类的顶部,而x.y.z是您的包名

第二个错误是由while语句后的第二个右大括号引起的

while(running) {
System.out.println("-----------------------------------------------------");
}
} // This brace shall not be here
编译器将此大括号解释为关闭主方法,并且不再接受此大括号之后的方法

但是,还有一些其他错误: -while语句后的分号 -局部变量声明之前的私有修饰符

  • 添加包声明。比如说

    package game;
    
    或者,将其移动到默认包

  • 通过在适当的位置添加
    }
    关闭您的类。最后是一个很好的起点

  • 修复您的
    while(enemyHealth>0);{
    通过删除
    并添加
    }
    来关闭循环

  • 将循环移动到
    main
    方法中

  • 移动
    System.out.println(“\t#“+敌人+”被攻击!#\n”)也输入到
    main
    方法中

  • 修复这一行中的引号
    System.out.println(“\t”+敌方+”+HP:+“”+enemyHealth);
    这将起作用:

    System.out.println("\t" + enemy + "'s HP:" + enemyHealth);
    
  • 现在,变量
    敌军
    enemyHealth
    也需要移动到
    main
    方法中。您的IDE可能建议将它们设置为静态。但是,由于
    Random rand=new Random();
    是在main方法中实例化的,因此将它们设置为静态没有意义


  • 现在你的程序将运行。至于它是否真的做了它应该做的,我不能回答,因为你没有告诉我们

    package game;
    
    import java.util.Random;
    import java.util.Scanner;
    
    public class Game {
    
        private static final String[] enemies = null;
        private Scanner rand;
        private int maxEnemyHealth;
    
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            Random rand = new Random();
    
            String[] enemies = { "troll", "rat", "imp", "goblin" };
            int maxEnemyHealth = 80;
            int enemyAttackDamage = 20;
            int health = 100;
            int playerAttackDamage = 30;
            int numHealthPots = 3;
            // int numStamimaPots = 3 (add stamina potions later on)
            int healthPotionHeal = 20;
            int healthPotionDropChance = 40; // 40%
    
            boolean running = true;
            System.out.println("Welcome, Dungeon Explorer!");
    
            GAME: while (running) {
                System.out
                        .println("-----------------------------------------------------");
            }
    
            int enemyHealth = rand.nextInt(maxEnemyHealth);
            String enemy = enemies[rand.nextInt(enemies.length)];
    
            while (enemyHealth > 0) {
                System.out.println("HP:" + health);
                System.out.println("\t" + enemy + "'s HP:" + enemyHealth);
                System.out.println("\n\t What do you choose to do?");
                System.out.println("\t Attack ");
                System.out.println("\t Health Potion");
                System.out.println("\t Run!");
    
                String input = in.nextLine();
            }
    
            System.out.println("\t#" + enemy + " attacked! #\n");
        }
    
    
    
    
    }
    

    while(enemyHealth>0);
    删除分号,因为这将在
    {}之前结束循环
    Come我认为你的编程生涯开始得不对。不要在互联网上寻找要复制的模板。找一本好书,从基础开始学习。从10行小练习开始,然后从那里开始。现在我甚至不确定你是否在使用真正的Java编译器。也许你正在使用IDEr另一种语言。在游戏下:label没有任何方法中的代码(如果我没有迷失在括号中:P)添加到@realdupoint,我认为您应该更简单地开始了解该语言以及错误告诉您的内容。我们可以为您调试该语言,但接下来呢?您将在2分钟内带着相同的问题回来。10名自称为“phpacademy”的人拍摄的关于Java的视频“这不是很有希望。他说这是你使用物体的第一课。也不是很有希望。这将是一个更好的开始,同样,我更喜欢一本好书。大括号关闭
    main
    方法,而不是类。虽然不推荐使用默认包,但使用默认包是合法的,因此,错误不可能是因为缺少包声明。我认为他忘记了包语句,而在默认包中没有类(在复制粘贴代码时发生)