2016-12-04 56 views
0

我已經通過幾個不同的帖子搜索,但還沒有找到我正在遇到的確切問題。我覺得我缺少的東西應該是非常明顯的,但由於某種原因,不能一直玩下去的東西一直在玩一切,但不能完全得到它。如果任何人都可以給我一隻手,將不勝感激。該程序旨在從文本文件中提取信息並輸出。 JMUnit7文件由教師提供給我們。 JMUnit7House文件是我的工作。提前致謝。錯誤的sym類型

package jmunit7; 
    import java.util.Scanner; 
    import java.io.File; 
    import java.io.IOException; 
    /** 
    * 
    * @author Xephus 
    */ 
public class JMUnit7 { 

    /** 
    * @param args the command line arguments 
    * @throws java.lang.Exception 
    */ 
    public static void main(String[] args) throws Exception 
    { 
    Scanner stdIn = new Scanner(System.in); 
    Scanner stdInFile = new Scanner(new 
    File("JMUnit7House.txt")); 
    JMUnit7House house1, house2; //New houses 

    //Create house 1 using default constructor 
    house1 = new JMUnit7House(); 
    house1.print(); //print house 1 with default values 

    String street, city, state, zipCode; 
    int number; 

    System.out.println("Importing Number."); 
    number = stdInFile.nextInt(); 
    stdInFile.nextLine(); 
    System.out.println("Importing Street."); 
    street = stdInFile.nextLine(); 
    System.out.println("Importing City."); 
    city = stdInFile.nextLine(); 
    System.out.println("Importing State."); 
    state = stdInFile.nextLine(); 
    System.out.println("Importing ZipCode."); 
    zipCode = stdInFile.nextLine(); 
    System.out.println(); 

    //use method call chaining to set values 
    //and print results for house 1 
    house1.setNumber(number).setStreet(street) 
      .setCity(city).setState(state) 
      .setZipCode(zipCode).print(); 

    System.out.println("Importing Number."); 
    number = stdInFile.nextInt(); 
    stdInFile.nextLine(); 
    System.out.println("Importing Street."); 
    street = stdInFile.nextLine(); 
    System.out.println("Importing City."); 
    city = stdInFile.nextLine(); 
    System.out.println("Importing State."); 
    state = stdInFile.nextLine(); 
    System.out.println("Importing ZipCode."); 
    zipCode = stdInFile.nextLine(); 
    System.out.println(); 

    //create house 2 using 5 parameter constructor 
    house2 = new JMUnit7House(number, 
    street, city, state, zipCode); 
    //print house 2 
    house2.print(); 
    } 
} 

我的代碼如下即時得到的和錯誤的符號類型的錯誤是:異常在線程「主」了java.lang.RuntimeException:不可編譯的源代碼 - 錯誤的符號類型:.setCity.setState.setZipCode.print在jmunit7.JMUnit7.main(JMUnit7.java:49)49是house1.setNumber行。

public class JMUnit7House { 
private int number; 
private String street; 
private String city; 
private String state; 
private String zipCode; 

public JMUnit7House() 
{ 
    number = 0; 
    street = "No Street"; 
    city = "No City"; 
    state= "No State"; 
    zipCode = "No Zip Code"; 
    } 
    //intializes house with arguments 
    public JMUnit7House(int number, String street, String city, String state,    String zipCode) 
    { 
    this.number = number; 
    this.street = street; 
    this.city = city; 
    this.state = state; 
    this.zipCode = zipCode; 
    } 
    public int setNumber(int number) 
    { 
    return number; 
    } 
public String setStreet(String street) 
{ 
    return street; 
} 
public String setCity(String city) 
{ 
    return city; 
} 
public String setState(String state) 
{ 
    return state; 
} 
public String setZipCode(String zipCode) 
{ 
    return zipCode; 
} 

    //function to print 
    public void print() 
{ 
    String info=String.format("House: %d\n", number); 
    info += String.format("Street: %s\n", street); 
    info += String.format("City: %s\n", city); 
    info += String.format("State: %s\n", state); 
    info += String.format("Zip: %s\n", zipCode); 
    System.out.println(info); 
    } 
} 
+0

和重建項目 – GurV

+0

在對IDE該行的代碼錯誤類型爲int不能dereferanced。 –

+0

在代碼中的哪一行準確? – GurV

回答

0

好的,我看到了問題。在下面:

house1.setNumber(number).setStreet(street) 
      .setCity(city).setState(state) 
      .setZipCode(zipCode).print(); 

因爲,setNumber()返回int和你打電話對setStreet(),它不會工作。

如果您想以上述方式撥打電話,請返回this對象而不是所需的方法。 對於例如爲:

public int setNumber(int number) 
    { 
    //do something 
    return number; 
    } 

如果您使用的是IDE,清潔所有的代碼錯誤都會成爲

public JMUnit7House setNumber(int number) 
    { 
    //do something 
    return this; 
    } 
+0

由於某種原因,將第一個房子作爲空白房屋打印,而不是從第二個房屋按預期顯示的.txt文件中分配變量,這是另一個問題。 –