2014-03-19 4 views
0

Этот код должен печатать количество кругов, вводимых пользователем в «Num», и давать им случайный радиус и центральную точку, но он ничего не рисует. Сам апплет просто показывает «Апплет начался». Любые решения?Почему это не печатает круги «Num»?

EDIT: Кроме того, открытые апплеты закрываются до тех пор, пока сам Eclipse не будет закрыт. EDIT: Обновлен код.

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

Код работает для меня, возможно, вы внесли ошибку в свой HTML-файл? Можете ли вы запустить его в программе просмотра апплетов из eclipse? – spydon

+0

Вот где я запускаю его изначально @spydon – sirnomnomz

+1

Работает ли он, если вы установили num = 5 и не выполняете вызов своего класса ConsoleReader? – spydon

ответ

1

Ваш класс ConsoleReader каким-то образом блокирует или он может быть неисправен, основной следует решить вашу проблему.

Заменить:

ConsoleReader console = new ConsoleReader(System.in); 

с

Scanner console = new Scanner(System.in); 

Кроме того, помните, что вы должны нажать ввести после того как вы ввели номер, и что вы должны ввести его в консоли, а не в окно апплета.

Редактировать: Поскольку appletviewer делает фокус, вам нужно нажать на консоль, а затем написать, чтобы иметь возможность вводить ввод. (Это может работать и с другим классом ввода консоли)

+0

Это все еще не работает. – sirnomnomz

+0

Я добавил класс чтения консоли для обзора @spydon – sirnomnomz

+1

Можете ли вы внести свой вклад? Вы видите свой номер в консоли и текст, который говорит «Вы напечатали # круги»? – spydon

Смежные вопросы