2012-12-07 2 views
0

프로그래밍이 처음인데 이름이라는 클래스를 쓰는 임무가 있습니다. 내 주요 방법으로, 전체 이름을 읽고 내 이름 생성자에게 전달하고 싶습니다. 그러나 메서드 데이터를 전달할 때 형식 불일치 오류가 계속 발생합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까??자바에서 사용자 지정 데이터 형식 사용

import java.util.Scanner; 
public class Names { 
String first, middle, last; 
    /** 
    * @param args 
    */ 
    public Names(){ 

    } 
    public Names(String first, String middle, String last){ 
     first = this.first; 
     middle = this.middle; 
     last = this.last; 
    } 

    //returns the first name 
    public String getFirst(){ 
     return first; 
    } 

    //returns the middle name 
    public String getMiddle(){ 
     return middle; 
    } 
    //returns the last name 
    public String getLast(){ 
     return last; 
    } 
    // Returns a string containing the person's full name in order, 
    public String firstMiddleLast(){ 
     String ret = first + " " + middle + " " + last; 
     return ret; 
    } 
    public String lastFirstMiddle(){ 
     String ret = last + ", " + first + " " + middle; 
     return ret; 
    } 
    public boolean equals(Names otherName){ 
     if (first.equalsIgnoreCase(otherName.first) || middle.equalsIgnoreCase(otherName.middle) 
       || last.equalsIgnoreCase(otherName.last)) 
      return true; 
     else 
      return false; 
    } 
    public String initials(){ 
     String retVal = first.substring(0) + "." + middle.substring(0) + "." + last.substring(0) + "."; 
     return retVal.toUpperCase(); 
    } 
    public int length(){ 
     String wholeName = (first+middle+last); 
     int retVal = wholeName.length(); 
     return retVal; 
    } 
    public static void main(String[] args) { 
     Names person1 = new Names(); 
     Names person2 = new Names(); 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Enter First Name: "); 
     person1.first = scan.next(); 

    } 

} 
+2

먼저 this- this.first =처럼 사용; this.middle = middle; this.last = last; – KG2289

+0

유형이 일치하지 않는 행이 있습니까? –

+1

@KratikaG 부정확하지만 형식이 맞지 않습니다. –

답변

2

라인 # 60 내가 어떤 컴파일 타임 오류의 게시 된 코드에서 볼 해달라고

이름 (문자열 첫째, 문자열 중간, 마지막 문자열) 생성자에 먼저 문자열을 전달하려고하지만, 코드는 다음과 같이해야합니다 :

System.out.println("Enter First Name: "); 
    String firstname = scan.next(); 
    System.out.println("Enter Middle Name: "); 
    String middlename = scan.next(); 
    System.out.println("Enter Last Name: "); 
    String lastname = scan.next(); 

    Names person1 =new Names(firstname, middlename, lastname); 

를 그리고 다른 사람에 의해 언급 된 바와 같이 생성자 선언은 유효하지 않습니다. 그것은 당신의 생성자 정의가 잘못 나에게 보이는

public Names(String first, String middle, String last){ 
     this.first = first; 
     this.middle = middle; 
     this.last = last; 
    } 
+0

OK ... 내가 어디로 잘못 가고 있는지 알 겠어. 나는 그것들을 읽어 들일 때 모든 것을 한번에 전달하기를 원했습니다. –

+0

@ CJM1224 당신이 전체 이름을 하나의 입력으로 공백 문자를 구분 기호로 사용하여 나누지 않는 한, 각 입력에 대해 scan.next()를 호출해야합니다 그런 다음 생성자에게 전달합니다. 그러나 isee처럼 여전히 빅터이기 때문에이 접근 방식을 따르는 것이 좋습니다. – PermGenError

3

귀하의 생성자는 거꾸로입니다. 이 작업을 수행합니다 :

public Names(String first, String middle, String last){ 
    this.first = first; 
    this.middle = middle; 
    this.last = last; 
} 

this 예약어는 항상 작업중인 클래스/객체를 참조합니다. 따라서 Names 클래스의 this.first을 참조 할 때 이름의 첫 번째 변수를 참조하고, 이름을 먼저 지정한 함수 매개 변수는 참조하지 않습니다.

관련 문제