当我尝试运行此代码时,总是收到此错误。 我正在使用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 中,变量只能在声明它们的块(大括号之间)内访问。在代码中,您在
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
// ...
}
}