此代码应打印出用户输入的圈数" 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;
}
答案 0 :(得分:1)
你的ConsoleReader类以某种方式阻塞或者它可能有问题,基本的应该解决你的问题。
替换:
ConsoleReader console = new ConsoleReader(System.in);
与
Scanner console = new Scanner(System.in);
另外请记住,在输入号码后必须按Enter键,并且必须在控制台中输入,而不是在小程序窗口中输入。
编辑: 当appletviewer正在关注焦点时,你必须按下控制台,然后写入以便能够提供输入。 (这可能也适用于您的其他控制台输入类)