javagui猜谜游戏

javagui猜谜游戏,java,swing,Java,Swing,不确定代码为什么不起作用似乎每件事都很好: 所以,正如您所看到的,这段代码是一个猜测游戏,它实现了swing,由于某些原因,它无法在eclipse上编译 public class GuessingGame { public static void main(String[] args) { int randomNumber; randomNumber = (int) (10 * Math.random()) + 1;

不确定代码为什么不起作用似乎每件事都很好:

所以,正如您所看到的,这段代码是一个猜测游戏,它实现了swing,由于某些原因,它无法在eclipse上编译

public class GuessingGame     {
        public static void main(String[] args) 
    {
        int randomNumber;
         randomNumber = (int) (10 * Math.random()) + 1;           
         Scanner keyboard = new Scanner(System.in);
         int guess=0;
         int attempts = 0;

         GuessingGameGUI game = new GuessingGameGUI( );
         game.setVisible(true);

         while (guess != randomNumber)
        {
             try
             {
                 System.out.print("Guess the number from 1-10: ");
                 attempts++;
                 guess = keyboard.nextInt();

                if (guess < 1 || guess > 10)
                    throw new BadGuessException(); 


             }

         catch (BadGuessException e)
         {
            System.out.println(e.getMessage());
         }

         catch (InputMismatchException e)
         {
             keyboard.next();
             System.out.println("Sorry, you entered an invalid number format. ");   
             }    
        }

     System.out.println("\nYOU GOT IT! (It took " + attempts + " attempt(s))");
    }
}
公共类猜谜游戏{
公共静态void main(字符串[]args)
{
整数随机数;
随机数=(int)(10*Math.random())+1;
扫描仪键盘=新扫描仪(System.in);
int guess=0;
int=0;
GuessingGameGUI game=新的GuessingGameGUI();
game.setVisible(true);
while(猜测!=随机数)
{
尝试
{
System.out.print(“从1-10猜数字:”);
尝试++;
guess=keyboard.nextInt();
如果(猜测<1 | |猜测>10)
抛出新的BadGuessException();
}
捕获(错误猜测)
{
System.out.println(e.getMessage());
}
捕获(输入不匹配异常e)
{
键盘。下一步();
System.out.println(“对不起,您输入的数字格式无效。”);
}    
}
System.out.println(“\n您得到了它!(需要“+尝试+”尝试”);
}
}

公共类GuessingGameGUI扩展JFrame
{
公共静态最终整数宽度=500;
公共静态最终内部高度=250;
公众猜测gamegui()
{ 
超级();
片名(“猜谜游戏”);
设置尺寸(宽度、高度);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(新的BorderLayout());
JPanel north=新的JPanel();
添加(北,BorderLayout.north);
JLabel lab1=新的JLabel(“猜一个介于1和10之间的数字?”);
JPanel中心=新的JPanel();
添加(中心,边框布局。中心);
JTextField userInput=新的JTextField();
JButton Guess=新JButton(“Guess”);
Guess.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
JPanel南部=新JPanel();
添加(南部,BorderLayout.south);
JLabel lab2=新的JLabel();
加上(lab2);
int guess=0;
int randomNumber=(int)(10*Math.random())+1;
int=0;
尝试++;
如果(例如getActionCommand().equals(“猜测”))
{
如果(猜测<1 | |猜测>10)
{
lab2.setText(“无效编号”);
getContentPane().setBackground(颜色为.red);
}
else if(猜测==随机数)
{
lab2.setText(“\n您得到了它!(它花费了“+次尝试+”
企图";;
}
其他的
{
getContentPane().setBackground(颜色为.GRAY);
lab2.setText(“对不起,再试一次”);
}
}
}
});
//北面板
添加(lab1);
//中心面板
setPreferredSize(新维度(200,25));
setLayout(新的FlowLayout());
添加(用户输入);
居中添加(猜测);
容器窗格=this.getContentPane();
}
}
关于

编译器告诉您它找不到诸如Scanner类之类的类,因为您尚未导入它们。你必须有这样的陈述

import java.util.Scanner;
使用此类和其他类



您有一个方法块,在该块中您同时抛出和捕获一个BadGuessException,在这种上下文中这真的没有意义。您需要通过阅读说明和/或与老师讨论来澄清在该代码块中需要做什么,但您当前所做的(除了没有创建BadGuessException类)是错误的。

看起来您缺少BadGuessException

如果这是学校作业,你可能需要这样的课程:

class BadGuessException extends Exception
{

}

“由于某种原因,它不会编译”
——这不是因为“某种”原因,事实上,编译器会准确地告诉您原因是什么以及在哪里。请与您的问题分享这一重要信息,这是一种关键。此外,请尽量只发布格式良好的代码。如果您允许的话,Shot Eclipse会帮您完成这项工作。它上面写着“解析时到达文件末尾”,我不知道怎么做。这是一个有趣的猜测游戏。如果您有任何错误,请阅读错误消息并首先尝试自己修复它。这是一个很好的锻炼。如果遇到问题,请在错误消息中搜索此网站,因为您会发现类似的问题。已解决扫描仪问题,但在这些问题上有问题抛出新的BadGuessException();}catch(BadGuessException e){System.out.println(e.getMessage());}catch(InputMismatchException e){@jaegers1234:然后创建该类!但不要像bhazero建议的那样做,因为他正试图重写getMessage——这是他不应该做的事情。@jaegers1234:实际上,无论您是否创建BadGuessException类,您都在错误地使用它,因为您在同一代码块中抛出并捕获它。请再次查看您的指令你为什么要重写
getMessage()
?这是一件非常危险和不正确的事情。你知道
getMessage()
方法从Exception的父类Throwable扩展而来,通过在执行时重写它,您正在以错误的方式更改类的预期行为,对吗?
import java.util.Scanner;
class BadGuessException extends Exception
{

}