我正在制作一个简单的基于文本的RPG。我收到此错误:"illegal start of expression"
。当我从String敌人中删除public修饰符时,它修复了非法的表达式错误开始,但是会产生两个"cannot find symbol"
错误。
import java.io.*;
import java.util.*;
public class rpggame {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
for(;;)//Character Creation
{
//All the code here is irrelevant to my problem, removed for space
}
Enemy rat = new Enemy(5, 5, 5, 1);
Enemy slime = new Enemy(5, 5, 5, 1);
Enemy bat = new Enemy(5, 5, 5, 1);
Enemy bunny = new Enemy(5, 5, 5, 1);
System.out.println("Time to battle! What do you want to fight?\nA. Rat\nB. Slime\n C. Bat\n D.Bunny");
String enemyChoice = input.next();
public String enemy; //Error here
enemy = null;
switch(enemyChoice)
{
case "a":
case "A":
enemy = "Rat";
break;
case "b":
case "B":
enemy = "Slime";
break;
case "c":
case "C":
enemy = "Bat";
break;
case "d":
case "D":
enemy = "Bunny";
break;
}
battle(); //When I remove the public modifier from enemy, I get "cannot find symbol" here.
}//end of main method
public static class Enemy
{
public static int enemyDamage;
public static int enemySpeed;
public static int enemyDefense;
public static int enemyLevel;
Enemy(int Da,int Sp,int De,int Lv)
{
enemyDamage=Da;
enemySpeed=Sp;
enemyDefense=De;
enemyLevel=Lv;
}
public void battle() {
System.out.println("You have encountered " + rpggame.enemy + " Level" + enemyLevel); //When I remove the public modifier from enemy, I get "cannot find symbol" here.
}
}}//Closing brace for rpggame
答案 0 :(得分:1)
访问修饰符(public
,private
和protected
)可以应用于字段(以及方法和类)。它们不能应用于局部变量,因为它没有任何意义。
本地变量可以在声明之后的任何地方访问,在块中声明它们,除了内部匿名类和lambda表达式(具有特殊规则)。
答案 1 :(得分:0)
编译器不知道如何处理public关键字。您正在声明一个局部变量,因此可见性关键字是无用的。您还应该将其初始化为null或其他内容。
答案 2 :(得分:0)
public static void main
是一个函数,而不是一个类。
您不能在函数内使用变量指示器。
如果您对班级成员使用“公共”,则可以从外部指定其可见性
但是,函数内部的变量范围在函数内部。从外面看不到它。
battle()需要一个指示符(一个实例)。例如,
rat.battle();
最后,rpggame类没有名为'enemy'的字段。
您可能需要rpggame类中的字段。如,
public class rpggame {
private Enemy enemy;
public static void main(String[] args) {