2016-07-25 81 views
-3

我創建了一個名爲Person的類。我遇到了在類中構造函數的屬性中存儲數據的麻煩。我做了一個測試人員,並用第一個構造函數嘗試了它,但它說它找不到該變量。我真正想要做的是製作一個Person類的數組 - 「Person」的數量將取決於用戶的輸入(選擇)並顯示它。無法在屬性中存儲值

public class Person 
    { 
     private String fname; 
     private String lname; 
     private byte age; 

    public Person(String fn, String ln, byte edad) 
     { 
      fname=fn; 
      lname=ln; 
      age=edad;  
     }  
    public Person(String fn, String ln) 
     { 
      fname=fn; 
      lname=ln; 
      age=20; 
     } 
    public int getAge() 
     { 
      return age; 
     } 
    public String getFname() 
     { 
      return fname; 
     } 
    public String getLname() 
     { 
      return lname; 
     } 
    } 

下面是測試代碼:

import java.util.Scanner; 
public class TestPerson 

{ 
    public static void main(String []args) 
    { 
Scanner scan = new Scanner(System.in); 
int choice, ctr; 
System.out.print("How many Person: "); 
choice = scan.nextInt(); 
Person p1 =new Person(fname, lname, age); 
Person[] Arr = new Person[choice]; 
for(ctr=0; ctr<choice; ctr++){ 
    System.out.print("First name:"); 
    fname=scan.next(); 
    System.out.print("Last name:"); 
    lname=scan.next(); 
    System.out.print("Age:"); 
    age=scan.nextInt(); 
} 
} 
} 
+1

'人P1 =新的Person( fname,lname,age);'應該在得到輸入後 – user7

回答

0

你需要聲明你的變量(fname,lname,age)fi先給它們分配一個值或使用。

以下語句聲明一個字符串變量fname並在控制檯輸入中爲其分配下一個字符串標記。

String fname = scan.next(); 

然後用這個變量作爲人的構造函數的參數,如:

Person p1 = new Person(fname, lname, age); 

把它放在一起,它應該是這樣的:

Person[] Arr = new Person[choice]; 
    for(ctr=0; ctr<choice; ctr++){ 
     System.out.print("First name:"); 
     String fname = scan.next(); 
     System.out.print("Last name:"); 
     String lname = scan.next(); 
     System.out.print("Age:"); 
     byte age = scan.nextByte(); 

     Person p1 = new Person(fname, lname, age); 
     Arr[ctr] = p1; 
    } 
+0

謝謝!這使我免於禿頂。 –

1

你有值之後 代碼修改這個

Person p1 ; 
String fname,lname; 
int age; 
Person[] Arr = new Person[choice]; 
for(ctr=0; ctr<choice; ctr++){ 
    System.out.print("First name:"); 
    fname=scan.next(); 
    System.out.print("Last name:"); 
    lname=scan.next(); 
    System.out.print("Age:"); 
    age=scan.nextInt(); 
    p1 =new Person(fname, lname, age); 
    Arr[ctr]=p1; 
} 

這將填充陣列,您應該創建Person對象

+0

謝謝輸入!我只是試了一下,但它仍然出現一個錯誤,說「找不到符號 - 變量fname」 –