当前位置: 首页 > 知识库问答 >
问题:

无法声明公共字符串(表达式的非法开头)[重复]

锺离飞尘
2023-03-14

我正在制作一个简单的基于文本的rpg。我收到了这个错误:表达式的非法开始”。当我从字符串中删除public修饰符时,它修复了表达式的非法开始错误,但创建了两个“找不到符号”错误。

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

共有3个答案

袁赞
2023-03-14
public static void main 

是一个函数,不是一个类。对于函数中的变量,不能使用指示符
如果对类成员使用“public”,则可以从外部指定其可见性
然而,函数中变量的作用域在函数中。从外面看不见。

Battle()需要一个(实例的)指示符。例如,

rat.battle();

最后,rpggame类没有名为“敌人”的字段
rpggame类中可能需要一个字段。例如。,

public class rpggame {
private Enemy enemy;
public static void main(String[] args) {
何涵忍
2023-03-14

编译器不知道如何处理public关键字。您正在声明一个局部变量,因此可见性关键字是无用的。您还应该将其初始化为null或其他什么。

尉迟德惠
2023-03-14

访问修饰符(publicPrivateprotected)可以应用于字段(和方法以及类)。它们不能应用于局部变量,因为它没有意义。

局部变量可以从声明后的任何地方访问,在声明它们的块中,除了匿名类和lambda表达式(它们有特殊规则)内部之外。

 类似资料:
  • 我无法打印已声明的字符串。以下是代码: 下面是错误:

  • 问题内容: 我基本上是在完善,完成并尝试从Java初学者的参考书中编译测试代码。目的是创建一个猜谜游戏,其中目标位于3个连续的单元格中(我将位置保持在数组中),而用户则猜测该单元格的编号。逐个摧毁目标细胞。 我在这里检查了六则关于同一错误的帖子,但我无法弄清楚出了什么问题。 这是我的错误: 我的代码是: 问题答案: 方法只能声明局部变量。这就是为什么当您尝试将其声明为public时,编译器会报告错

  • 我的正则表达式是 当我在java中使用Pattern.complie()编译时,我得到了*非法重复字符* 我测试了这个正则表达式 当我编译这个时,它没有显示错误。 为什么会发生这种情况?

  • 我不熟悉Javascript和正则表达式,所以我一直在研究如何使路由匹配所有以

  • 为什么我会得到:非法的表达式开始-公共静态int noOfLetters(String str){error?我如何修复它?

  • 我的代码是关于循环和方法的,这是一个让用户计算面积或使用4个基本数学运算的程序。(三角形、正方形、矩形)及其选择的进程:加法、减法、乘法和除法。 我想我正确地关闭了那里的加法函数,我已经检查了关闭每个函数,它们似乎工作得很好,除了加法函数,因为这是我唯一的错误。