2017-02-24 14 views
1

私はFormクラスを作成しました。 10文字列の配列は、コンストラクタ内の唯一のパラメータです。どのようにしてクラスのインスタンスを作成できますか?私はセッターやゲッタには別の問題があると確信していますが、私はこれを解決するまでテストできません。唯一のインスタンス変数としてStringの配列を持つクラスのインスタンスを作成するにはどうすればよいですか?

public class FormLab { 



public static void main(String[]args){ 

    Form f1 = new Form(String webForm); 

    System.out.println(print(String[] webForm)); 
    System.out.println("Any Empty Strings? " + f1.getEmptyFields); 
    System.out.println("Number of characters in userID? " + f1.getCharNum); 
    System.out.println("Do password fields match? " + f1.getPwCheck); 
    System.out.println("Does email contain correct characters? " + f1.getEmailCheck); 




} 

}


public class Form { 

String[] webForm = new String[10]; 

private String userID; 
private String pw; 
private String pw2; 
private String email; 
private String name; 
private String address; 
private String city; 
private String state; 
private String zip; 
private String telephone; 

//constructor 
public Form(String[] webForm){ 


    //filling array with field values 
    webForm[0] = ""; 
    webForm[1] = "java123"; 
    webForm[2] = "java123"; 
    webForm[3] = "[email protected]"; 
    webForm[4] = "Luke Skywalker"; 
    webForm[5] = "1234 The Force Way"; 
    webForm[6] = "Rome"; 
    webForm[7] = "GA"; 
    webForm[8] = "30161"; 
    webForm[9] = "7065551234"; 


} 

public boolean getEmptyFields() { 
    //boolean empty = false; 
    for(int i = 0; i < webForm.length; i++){ 
     if(webForm[i]!= null){ 
      return true; 
     } 
    } 

    return false; 
} 

public String getUserID(){ 

    return userID; 

} 

public void setUserId(String userID){ 
    this.userID = userID; 
} 

public String getPw(){ 

    return pw; 

} 

public void setPw(String pw){ 
    this.pw = pw; 
} 

public String getPw2(){ 

    return pw2; 

} 

public void setPw2(String pw2){ 
    this.pw2 = pw2; 
} 

public String getEmail(){ 

    return email; 

} 

public void setEmail(String email){ 
    this.email = email; 
} 

public String getName(){ 

    return name; 

} 

public void setName(String name){ 
    this.name = name; 
} 

public String getAddress(){ 

    return address; 

} 

public void setAddress(String address){ 
    this.address = address; 
} 

public String getCity(){ 

    return city; 

} 

public void setCity(String city){ 
    this.city = city; 
} 

public String getState(){ 

    return state; 

} 

public void setState(String state){ 
    this.state = state; 
} 

public String getZip(){ 

    return userID; 

} 

public void setZip(String zip){ 
    this.zip = zip; 
} 

public String getTelephone(){ 

    return telephone; 

} 

public void setTelephone(String telephone){ 
    this.telephone = telephone; 
} 

public int getCharNum(String userID) { 
    int userLength = 0; 

    //userID.length(); 

    return userLength; 

} 

public boolean getPwCheck() { 
    boolean check = pw.equalsIgnoreCase(pw2); 
// pw.equalsIgnoreCase(pw2); 

    return check; 

} 

public boolean getEmailCheck(String email) { 

    if(email.contains("@") && email.contains(".")){ 
     return true; 
    } 
    return false; 
    } 

public static void getPrint(String[] webForm) { 

System.out.println(webForm.toString()); 

} 

}

+0

フォームコンストラクタには引数を指定しないでください。すべての呼び出し元にコンストラクターが上書きする10個の要素の配列を提供するのではなく、10個の要素の配列を作成する必要があります。 Googleは "Javaチュートリアルの配列"の配列を作成する方法を知っている。メソッドを呼び出す方法を知る "Javaチュートリアルメソッド"のGoogle –

答えて

0

利用法のarraycopy。

public Form(String[] webForm){ 
    System.arraycopy(webForm, 0, this.webForm, 0, webForm.length); 
} 
0

コンストラクタは、引数として文字列配列がかかりますが、あなたはそれを文字列を渡して、試してみてください。

myList = new String[]; 
myForm = new Form(myList); 
+0

渡された配列は何もしないので、明らかに多くの問題があります。文字通り何もしない配列を渡すのは無駄です。彼のコンストラクタパラメータもグローバル配列とあいまいになります。 –

0

あなたは次のようにパラメータとしてそれを置く前に、あなたの配列を宣言する必要があります。

public class FormLab { 

public static void main(String[]args){ 

     String webForm = new String[10]; 
     Form f1 = new Form(webForm); 

     /*System.out.println(print(String[] webForm)); THIS IS WRONG*/ 
     /*TO PRINT THE VALUES IN THE ARRAY YOU NEED TO WRITE A METHOD IN UR 
     FORM CLASS THAT WILL LOOP THRU UR VARIABLE AND PRINT*/ 
     System.out.println("Any Empty Strings? " + f1.getEmptyFields); 
     System.out.println("Number of characters in userID? " + f1.getCharNum); 
     System.out.println("Do password fields match? " + f1.getPwCheck); 
     System.out.println("Does email contain correct characters? " + f1.getEmailCheck); 
} 
+0

Formクラスで宣言したときにmainメソッドで宣言する必要があるのはなぜですか? – user3403708

+0

mainメソッドは、urフォームクラスにある変数について何も知らない。したがって、引数を渡しているので、メインメソッドのurクラスのインスタンスにも引数を渡す必要があります。 urフォームクラスから変数を使用する場合は、urフォームクラスコンストラクタでパラメータを削除してください。 – Danny

+0

すべての提案を試してもエラーが発生しました。ビルド中にエラーが発生しました。 プロジェクト 'Labs'でビルダー 'Java Builder'を実行中にエラーが発生しました。 java.lang.NullPointerException – user3403708

関連する問題