2014-03-05 2 views
-5

나는이 오류를 이해하지 못한다. 그것은 닫힌 중괄호가있는 줄에 세미콜론을 넣으라고 요청하고있다. 내 이해에서 중괄호는 코드 덩어리를 끝내므로 왜 세미콜론을 추가해야합니까?자바 컴파일 오류 ';' 'on'expected

내 코드 :

import java.util.*; 

public class textdisplay { 
    public static void main(String[] args) { 

String text = "null"; 
String more = "y"; 
String string1, string2; 

Scanner keyboard = new Scanner (System.in); 


    while (more.charAt(0) == 'y' || more.charAt(0) == 'Y') { 

     System.out.println("\n\t\t\t Enter 2 strings of text :)"); 
     System.out.print("\n\t\tString 1: "); 
     string1 = keyboard.nextLine(); 
     System.out.print("\n\t\tString 2: "); 
     string2 = keyboard.nextLine(); 
     System.out.print("Your combined strings: " + methods.textAdder(string1, string2)); 

    System.out.print("\n\t\t\t Do more (Y/N)? "); 
    more = keyboard.next(); 

    } 

    class methods { 
     String textAdder(String string1, String string2); 
     return string1 + string2; 
    } 
} 
} 

Error: 
textdisplay.java:29: error: illegal start of type 
        return string1 + string2; 
        ^
textdisplay.java:29: error: ';' expected 
        return string1 + string2; 
         ^
textdisplay.java:29: error: illegal start of type 
        return string1 + string2; 
           ^
+0

당신은 그 안에 임의의 코드를 가진'클래스 메쏘드 '를 가지고 있습니다. 명령문은 초기화 프로그램, 생성자 또는 메소드에 있어야합니다. –

+0

어느 라인? (힌트 :'String textAdder (String string1, String string2);.)이게 뭐야?) – iamnotmaynard

+0

그리고'class methods'는'main' 메쏘드 안에 있습니다. 그런 방법으로 명명 된 클래스를 정의 할 수는 없습니다. – Wyzard

답변

3

당신의 methods 클래스 내부 textAdder 방법은 정의 된 메소드 본문이 없습니다, 당신 문제를 일으키는 무슨. 간단히 다음과 같이 수정하십시오.

String textAdder(String string1, String string2) 
{ 
    return string1 + string2; 
} 

그러나 정적 메소드를 통해 로컬 클래스에서이 메소드에 액세스하고 있습니다. 허용되지 않습니다. 메서드 내에서 클래스의 인스턴스를 만들거나 기본 클래스로 메서드를 이동 한 다음 static 키워드를 추가하면됩니다.

+0

어떻게? 코드가 잘못 구성 되었더라도 오류를 방지합니다. – Arbiter

+0

아, 네 말이 맞아. 알려 줘서 고마워. 답변이 업데이트되었습니다. – Arbiter

+0

아, 다시 말하지만, 실제로는 내부의 클래스를 사용하지 않으므로 알 수 없습니다. 다시 감사합니다. – Arbiter