2011-12-30 2 views
-4

Exception in thread "main" java.lang.Error: Unresolved compilation problem: Syntax error on token "]", invalid ("main"스레드의 예외

오류 메시지가 표시됩니다. 이것은 내 코드입니다.

import java.awt.*; 
import java.util.Random; 
import java.awt.event.*; 
import javax.swing.*; //notice javax 
public class Frame1 extends JFrame 
{ 
    JPanel pane = new JPanel(); 
    Frame1() // the frame constructor method 
    { 
    super("Harry's Random Number Generator"); setBounds(100,100,300,100); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    Container con = this.getContentPane(); // inherit main frame 
    con.add(pane); // add the panel to frame 
    // customize panel here 
    // pane.add(someWidget); 
    setVisible(true); // display this frame 
    } 
    public static void main(String args[]) {new Frame1();} 
    Random dice = new Random(); 
    int number;{ 

    for(int counter=1; counter<10;counter++){ 
     number = 1+dice.nextInt(1000); 
     System.out.println(number + " "); 
    } 

    } 

} 
+0

어떤 줄에서 오류가 발생합니까? 완전한 스택 추적을 게시 할 수 있습니까? –

+0

Google에 제공 한 코드에는 게시 한 오류가 없습니다. 프로그램은 그림과 같이 실행되지만 숫자를 인쇄하고 화면에 회색 프레임을 표시하는 것 외에는 많은 일을하지는 않습니다. – Paul

+0

아마도 Eclipse를 사용하고있을 것입니다. Alt-Shift-Q를 누른 다음 X를 누르십시오 (또는 창 -보기보기 - 문제점으로 가십시오). 이보기에서 컴파일 오류 메시지를 찾을 수 있습니다. 이를 읽고 컴파일 문제를 수정하십시오. 코드가 훨씬 더 읽기 쉽고 올바르게 들여 쓰기가되면 훨씬 쉽게 오류를 알 수 있습니다. 편집기에서 Ctrl-Shift-F를 눌러 코드의 서식을 지정하십시오. –

답변

2

코드가 완전히 엉망입니다.

이 라인 :

public static void main(String args[]) {new Frame1();} 
    Random dice = new Random(); 

시작하고 기본 방법을 종료 한 후, 부재 dice 변수를 정의한다.

이 라인 :

int number;{ 

for(int counter=1; counter<10;counter++){ 
    number = 1+dice.nextInt(1000); 
    System.out.println(number + " "); 
} 

} 

그때 가서 또 다른 멤버 변수 number 한 다음 인스턴스 초기화{ ... }을 정의합니다.

코드를 올바르게 포맷하십시오. 구문 적으로 말해서, 나는이처럼 작성합니다

import java.awt.Container; 

public class Frame1 extends JFrame { 

    JPanel pane = new JPanel(); 

    Frame1() { // the frame constructor method 
     super("Harry's Random Number Generator"); 
     setBounds(100,100,300,100); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     Container con = this.getContentPane(); // inherit main frame 
     con.add(pane); // add the panel to frame 
     // customize panel here 
     // pane.add(someWidget); 
     setVisible(true); // display this frame 
    } 

    public static void main(String args[]) { 
     new Frame1(); 

     Random dice = new Random(); 
     int number; 

     for(int counter=1; counter<10;counter++){ 
      number = 1+dice.nextInt(1000); 
      System.out.println(number + " "); 
     } 
    } 
} 

(실제로 컴파일 및 실행 "좋은".)

+0

그러나 이것은 그의 질문에 대답하지 않습니다. – Paul

+1

참. 답변이 업데이트되었습니다. – aioobe

0

귀하의 주요 방법이다 한줄 : 새로운 프레임 1(); main()을 닫으면 새로운 코드가 나타납니다 : Random dice = ... 메소드 내에 캡슐화되지 않았습니다.

+0

이것은 사실이지만 예외를 초래 한 예외 또는 컴파일을 설명하지 않습니다. –