java_fens 2024-07-09 20:56 采纳率: 100%
浏览 10
已结题

为什么 错误: 无法访问的语句 java

import java.util.Scanner;
import java.util.Random;
public class Gungame{
    static Scanner sr=new Scanner(System.in);
    static int a1=3;
    static int a2=3;
    static String player1,player2;
    static String[] dao={"香烟","上帝的帮助","手铐","汽水","放大镜","小刀"};
    static public void main(String[] args)throws InterruptedException{
        System.out.println("欢迎来到俄罗斯转盘赌!每人有三条命");
        System.out.println("输入玩家1名字");
        player1=sr.nextLine();
        System.out.println("输入玩家2名字");
        player2=sr.nextLine();
        while(a1!=0||a2!=0){
            System.out.print("现在开始装弹");
            for(int i=1;i<=3;i++){
                Thread.sleep(500);
                System.out.print(".");
                Thread.sleep(500);
                System.out.print(".");
                Thread.sleep(500);
                System.out.print(".");
                Thread.sleep(500);
                System.out.print("\n\n\n\n\n\n\n\n\n\n\n");
                System.out.println("欢迎来到俄罗斯转盘赌!每人有三条命");
            }
            System.out.println("装弹完毕,五发实弹-五发虚弹");
            double s=10,d=5,t=1;
            double k=d*1.0/s*100.0;
            do{
                Random rand=new Random();
                int h=rand.nextInt(100);
                boolean flag=true;
                System.out.println(player1+"的生命数:"+a1+"   "+player2+"的生命数:"+a2);
                if(t==1){System.out.println(player1+"要打谁?\n1:自己\n2:对方");}
                else {System.out.println(player2+"要打谁?\n1:自己\n2:对方");}
                int dan=sr.nextInt();
                if(dan==1){flag=false;}
                    if((t==1&&h<=k&&dan==1)||(t==0&&h<=k&&dan==2)){
                    System.out.println(player1+"的生命数减一");
                    s--;
                    d--;
                    a1--;
                if(a1==0){System.out.print(player2+"胜利,得到了10000000000美元,"+player1+"则化为了地狱的亡魂。");return;}
                }else if((t==0&&h<=k&&dan==1)||(t==1&&h<=k&&dan==2)){
                    System.out.println(player2+"的生命数减一");
                    s--;
                    d--;
                    a2--;
                    if(a2==0){System.out.print(player1+"胜利,得到了10000000000美元,"+player2+"则化为了地狱的亡魂。");return;}
                }else{
                    System.out.println("大家都安然无恙");
                    s--;
                }
                Thread.sleep(1500);
                System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
                if(flag){
                    if(t==1){t=0;}
                    else {t=1;}
                }
                if(s==0){break;}
                k=d/s*100;
            }while(a1!=0||a2!=0);
            if(a2==0){
                System.out.print(player2+"胜利,得到了10000000000美元,"+player1+"则化为了地狱的亡魂。");
                return;
            }else{
                System.out.print(player1+"胜利,得到了10000000000美元,"+player2+"则化为了地狱的亡魂。");
                return;
            }
            Random ran = new Random();\\!!!!!!!!!!!!!!!!??????????他一直显示 错误: 无法访问的语句
     
            int d_num=ran.nextInt(5);
            System.out.println(player1+"获得了道具:"+dao[d_num]);
            ran=new Random();
            d_num=ran.nextInt(5);
            System.out.println(player2+"获得了道具:"+dao[d_num]);
        }
    }
}

img

img


各位,请问这是为什么,本人已经想了三天三夜了。
附:编译器为 Visual Studio Code

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-07-09 20:58
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    您好!看起来您在 Java 程序中遇到了一个编译错误。错误提示“无法访问的语句”通常意味着编译器在代码中发现了一个语法错误,导致无法正确解析代码。

    根据您提供的代码片段和错误提示,问题出现在以下这段代码:

    Random ran = new Random();
    int d_num = ran.nextInt(5);
    System.out.println(player1 + "获得了道具:" + dao[d_num]);
    ran = new Random();
    d_num = ran.nextInt(5);
    System.out.println(player2 + "获得了道具:" + dao[d_num]);
    

    问题所在:在 Java 中,Random ran = new Random(); 这行代码不能出现在 while 循环之外的任何地方,因为它不是一个语句的一部分。在 Java 中,每个语句都必须是方法的一部分,或者至少是代码块的一部分。

    解决方案:要解决这个问题,您需要将这些语句放入一个适当的代码块中。例如,您可以将它们放入 if 语句或 else 语句中,或者作为另一个方法的一部分。但是,根据您提供的代码,看起来您可能想要在游戏结束时给胜利者一个道具。如果是这样,您可以将这些语句放入胜利条件的 if 语句中。

    这里是一个修改后的示例:

    // ...
    if(a1 == 0) {
        System.out.print(player2 + "胜利,得到了10000000000美元," + player1 + "则化为了地狱的亡魂。");
        // 给胜利者一个道具
        Random ran = new Random();
        int d_num = ran.nextInt(5);
        System.out.println(player2 + "获得了道具:" + dao[d_num]);
        return;
    } else if(a2 == 0) {
        System.out.print(player1 + "胜利,得到了10000000000美元," + player2 + "则化为了地狱的亡魂。");
        // 给胜利者一个道具
        Random ran = new Random();
        int d_num = ran.nextInt(5);
        System.out.println(player1 + "获得了道具:" + dao[d_num]);
        return;
    }
    // ...
    

    请注意,您不需要为同一个 Random 对象重新实例化,所以您可以在第一次实例化后直接使用它。

    希望这能帮助您解决问题!如果您还有其他问题或需要进一步的帮助,请随时告诉我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月20日
  • 已采纳回答 7月12日
  • 创建了问题 7月9日

悬赏问题

  • ¥15 novnc连接pve虚拟机报错安全协议不支持262
  • ¥15 设备精度0.03给多少公差能达到CPK1.33
  • ¥15 qt+ffmpeg报错non-existing PPS 0 referenced
  • ¥15 FOC simulink
  • ¥15 咨询一下有关于王者荣耀赢藏战绩
  • ¥50 MacOS 使用虚拟机安装k8s
  • ¥500 亚马逊 COOKIE我如何才能实现 登录一个亚马逊账户 下发新 COOKIE ..我使用下发新COOKIE 导入ADS 指纹浏览器登录,我把账户密码 修改过后,原来下发新COOKIE 不会失效的方式
  • ¥20 玩游戏gpu和cpu利用率特别低,玩游戏卡顿
  • ¥25 oracle中的正则匹配
  • ¥15 关于#vscode#的问题:把软件卸载不会再出现蓝屏