为什么当我使用 JOptionPane 运行 java 代码时会出现此错误?

问题描述 投票:0回答:1

当我尝试运行此代码时,总是收到此错误。 我正在使用java,我正在尝试使用JOptionPane制作一个剪刀石头布游戏。 我对java还很陌生。

导入java.util.*; 导入 javax.swing.JOptionPane;

班级游戏1{

public static void main(String[]args){
Random rand = new Random();
int g = rand.nextInt(3)+1;
String in = JOptionPane.showInputDialog("Enter Rock,Paper,Scissors: ");
  final String r = "Rock";
  final String p = "Paper";
  final  String s = "Scissors";



if(g==1){
    String ing1 = r;
}else if(g==2){
    String ing1 = p;
}else{
    String ing1 = s;
}
if(in==r && ing1 == r){
    JOptionPane.showMessageDialog(null,"Draw","Dialog box", JOptionPane.PLAIN_MESSAGE);

}else if(in == r && ing1 == p){
    JOptionPane.showMessageDialog(null,"You lose","Dialog box", JOptionPane.PLAIN_MESSAGE);
}else if(in == r && ing1 == s){
    JOptionPane.showMessageDialog(null,"You win","Dialog box",JOptionPane.PLAIN_MESSAGE);
}





    if(in==p && ing1 == r){

        JOptionPane.showMessageDialog(null,"You win","Dialog box", JOptionPane.PLAIN_MESSAGE);

    }else if(in == p && ing1 == p){
        JOptionPane.showMessageDialog(null,"You win","Dialog box",JOptionPane.PLAIN_MESSAGE);
    }else if(in == p && ing1 == p){
        JOptionPane.showMessageDialog(null,"You lose","Dialog box", JOptionPane.PLAIN_MESSAGE);
    }




if(in==s && ing1 == r){
    JOptionPane.showMessageDialog(null,"You lose","Dialog box", JOptionPane.PLAIN_MESSAGE);

}else if(in == s && ing1 == p){
    JOptionPane.showMessageDialog(null,"You win","Dialog box", JOptionPane.PLAIN_MESSAGE);
}else if(in == s && ing1 ==p){
    JOptionPane.showMessageDialog(null,"Draw","Dialog box", JOptionPane.PLAIN_MESSAGE);
}

} }

这是我的代码。

线程“main”java.lang.Error中出现异常:未解决的编译问题: ing1 无法解析为变量 ing1 无法解析为变量 ing1 无法解析为变量 ing1 无法解析为变量 ing1 无法解析为变量 ing1 无法解析为变量 ing1 无法解析为变量 ing1 无法解析为变量 ing1 无法解析为变量

    at game1.main(stonepaperscissors_game1.java:23)

这是我运行时遇到的错误。

java swing compiler-errors joptionpane
1个回答
0
投票

您遇到的错误是由于变量作用域问题造成的。在 Java 中,变量只能在声明它们的块(大括号之间)内访问。在代码中,您在

ing1
if
块中定义了
else if
变量,这意味着它在这些块之外不可见。

要解决此问题,您需要在

ing1
语句之外声明
if
变量,以便在整个
main
方法中可以访问它。您可以通过以下方式调整代码来解决该问题:

import java.util.*;
import javax.swing.JOptionPane;

class game1 {

    public static void main(String[] args) {
        Random rand = new Random();
        int g = rand.nextInt(3) + 1;
        String in = JOptionPane.showInputDialog("Enter Rock, Paper, Scissors: ");
        final String r = "Rock";
        final String p = "Paper";
        final String s = "Scissors";

        String ing1 = "";  // Declare ing1 outside of the if statements

        if (g == 1) {
            ing1 = r;
        } else if (g == 2) {
            ing1 = p;
        } else {
            ing1 = s;
        }

        if (in.equals(r) && ing1.equals(r)) {
            JOptionPane.showMessageDialog(null, "Draw", "Dialog box", JOptionPane.PLAIN_MESSAGE);
        } else if (in.equals(r) && ing1.equals(p)) {
            JOptionPane.showMessageDialog(null, "You lose", "Dialog box", JOptionPane.PLAIN_MESSAGE);
        } else if (in.equals(r) && ing1.equals(s)) {
            JOptionPane.showMessageDialog(null, "You win", "Dialog box", JOptionPane.PLAIN_MESSAGE);
        }

        // Include the other conditions similarly

        // ...
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.