为什么这不打印“Num”圈?

时间:2014-03-19 17:50:33

标签: java for-loop applet graphics2d

此代码应打印出用户输入的圈数" Num"并给它们一个随机的半径和中心点,但它并没有画任何东西。 applet本身只显示" Applet已启动"。任何解决方案?

编辑:此外,打开的小程序在Eclipse本身关闭之前不会关闭。 编辑:更新了代码。

import java.applet.Applet;
import java.awt.*;
import java.util.Random;

public class project10 extends Applet {

    ConsoleReader console = new ConsoleReader(System.in);
    Random generator = new Random();

    private static final long serialVersionUID = -3660618513445557612L;


    public void drawCenteredCircle(Graphics g, int x, int y, int r) {
          g.fillOval(x,y,r,r);
    }


    public void paint(Graphics g){

        int num = 5;

        try{
        System.out.println("How many circles would you like to draw?");
        //num = console.readInt();

        for(int i = 1; num >= i; i++){
            g.setColor(Color.BLACK);
            int one = generator.nextInt(100);
            int two = generator.nextInt(100);
            int three = generator.nextInt(100);
            drawCenteredCircle(g,one,two,three);
        }
        }catch(NumberFormatException e){
            System.out.println("Input was not a valid number, please try again.");
        }finally{
            System.out.println("You printed " + num + " circles");
        }
    }

}

控制台阅读器类:

    import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;

/** 
   A class to read strings and numbers from an input stream.
   This class is suitable for beginning Java programmers.
   It constructs the necessary buffered reader, 
   handles I/O exceptions, and converts strings to numbers.
*/

public class ConsoleReader
{  /**
      Constructs a console reader from an input stream
      such as System.in
      @param inStream an input stream 
   */
   public ConsoleReader(InputStream inStream)
   {  reader = new BufferedReader
         (new InputStreamReader(inStream)); 
   }

   /**
      Reads a line of input and converts it into an integer.
      The input line must contain nothing but an integer.
      Not even added white space is allowed.
      @return the integer that the user typed
   */
   public int readInt() 
   {  String inputString = readLine();
      int n = Integer.parseInt(inputString);
      return n;
   }

   /**
      Reads a line of input and converts it into a floating-
      point number. The input line must contain nothing but 
      a nunber. Not even added white space is allowed.
      @return the number that the user typed
   */
   public double readDouble() 
   {  String inputString = readLine();
      double x = Double.parseDouble(inputString);
      return x;
   }

   /**
      Reads a line of input. In the (unlikely) event
      of an IOException, the program terminates. 
      @return the line of input that the user typed, null
      at the end of input
   */
   public String readLine() 
   {  String inputLine = "";

      try
      {  inputLine = reader.readLine();
      }
      catch(IOException e)
      {  System.out.println(e);
         System.exit(1);
      }

      return inputLine;
   }

   private BufferedReader reader; 
}

1 个答案:

答案 0 :(得分:1)

你的ConsoleReader类以某种方式阻塞或者它可能有问题,基本的应该解决你的问题。

替换:

ConsoleReader console = new ConsoleReader(System.in);

Scanner console = new Scanner(System.in);

另外请记住,在输入号码后必须按Enter键,并且必须在控制台中输入,而不是在小程序窗口中输入。

编辑: 当appletviewer正在关注焦点时,你必须按下控制台,然后写入以便能够提供输入。 (这可能也适用于您的其他控制台输入类)