2016-05-19 11 views
-2

コードはすべてのものを動作していない理由はわからない細かいD思わ:JavaのGUI推測ゲーム

だから、このコードは、あなたがそれを見ることができるように推測ゲームでスイングを実装し、何らかの理由でそれだけでコンパイルされません日食の

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))"); 
    } 
} 

について
  public class GuessingGameGUI extends JFrame 
    { 
    public static final int WIDTH = 500; 
    public static final int HEIGHT = 250; 

    public GuessingGameGUI() 
    { 
     super(); 
     setTitle("Guessing Game"); 
     setSize(WIDTH, HEIGHT); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLayout(new BorderLayout()); 

     JPanel north= new JPanel(); 
     add(north, BorderLayout.NORTH); 
     JLabel lab1 = new JLabel("Guess a number between 1 and 10?"); 

     JPanel center = new JPanel(); 
     add(center, BorderLayout.CENTER); 
     JTextField userInput = new JTextField(); 
     JButton Guess = new JButton("Guess"); 

    Guess.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      JPanel south = new JPanel(); 
      add(south, BorderLayout.SOUTH); 
      JLabel lab2 = new JLabel(); 
      south.add(lab2); 

      int guess = 0; 
      int randomNumber=(int) (10 * Math.random()) + 1; 
      int attempts = 0; 
      attempts++; 


      if (e.getActionCommand().equals("Guess")) 
      { 
       if (guess < 1 || guess > 10) 
       { 
        lab2.setText("Invalid number"); 
        getContentPane().setBackground(Color.red); 
       } 
       else if (guess == randomNumber) 
       { 
        lab2.setText("\nYOU GOT IT! (It took " + attempts + " 

      attempt(s))"); 
       } 
       else 
       { 
        getContentPane().setBackground(Color.GRAY); 
        lab2.setText("Sorry, try again"); 
       } 
      } 

     } 
    }); 
     //NORTH PANEL 
     north.add(lab1); 

     //CENTER PANEL 
     userInput.setPreferredSize(new Dimension(200, 25)); 
     setLayout(new FlowLayout()); 
     center.add(userInput); 
     center.add(Guess); 
     Container pane = this.getContentPane(); 
     } 
     } 
+1

「と、何らかの理由でそれがコンパイルされません」' - 「いくつかの」理由でそれはです**ません**実際、コンパイラは理由と場所を正確に伝えています。この重要な情報をあなたの質問と共有してください。それはちょっとした鍵です。 –

+0

また、書式の整ったコードだけを投稿してください。あなたがそれを許可すれば、Eclipseはあなたのためにこれを行います。 –

+0

それは「解析中にファイルの終わりに達しました」と表示されています。 – jaegers1234

答えて

1

/tmp/java_966Ca2/GuessingGame.java:7: 
    error: cannot find symbol 
    Scanner keyboard = new Scanner(System.in); 
^symbol: class Scanner location: class GuessingGame 

/tmp/java_966Ca2/GuessingGame.java:7: 
    error: cannot find symbol 
    Scanner keyboard = new Scanner(System.in); 

コンパイラは、Scannerクラスなどのクラスをインポートしていないため、クラスを見つけることができないことを伝えています。あなたはこれと他のクラスを使用する

import java.util.Scanner; 

のようなステートメントを持っている必要があります。


BadGuessExceptionをスローして捕捉しているメソッドブロックがありますが、これは実際にはこのコンテキストで意味をなさないものです。指示や教師との議論を経て、そのコードブロックで何をする必要があるのか​​を明確にする必要がありますが、現在BadGuessExceptionクラスを作成していない以外は、間違っています。

+0

スキャナの問題が既に解決しました。新しいBadGuessException()をスローするには問題があります。 }キャッチ(BadGuessException電子) { のSystem.out.println(e.getMessage())。 } catch(InputMismatchException e) { – jaegers1234

+0

@ jaegers1234:クラスを作成してください!しかし、bhazeroがgetMessageをオーバーライドしようとしているので、彼がやってはならないことを示唆しているので、それをしないでください。 –

+0

@ jaegers1234:BadGuessExceptionクラスを作成するかどうかは関係ありませんが、同じコードブロックで投げてキャッチしているので間違って使用しています。何か基本的な誤解があるので、あなたの指示をもう一度見直してください。 –

-1

BadGuessExceptionが見つからないようです。

これはおそらく、このようなクラスを必要とする学校の割り当ての場合: `

class BadGuessException extends Exception 
{ 

} 
+0

なぜあなたは 'getMessage()'をオーバーライドしていますか?それは非常に危険で不正確なことです。 –

+0

'getMessage()'メソッドはExceptionの親クラスThrowableから拡張されていて、それをオーバーライドすることでクラスの予想される動作を間違った方法で変更していることがわかりました。 –