2015-11-08 94 views
-1

Cullerton Part District每个夏季都举办迷你奥运。创建一个名为Participant的类,其中包含名称,年龄和街道地址的字段。包含一个为每个字段分配参数值的构造函数和一个返回包含所有值的String的toString()方法。还包括一个equals()方法,用于确定两个参与者在所有三个字段中具有相同值时是否相等。创建一个包含至少5名参与者的两个阵列的应用程序 - 一个持有迷你马拉松参与者,另一个持有参与者参加跳水比赛。提示用户参与两个事件的参与者将文件保存为BC.java和ABC.java。我的输出存在一些问题

import javax.swing.JOptionPane; 
import java.util.*; 

public class ABC { 
    private static Participant mini[] = new Participant[2]; 


    public static void main(String[] args) { 

     setParticipant(); 
     displayDetail(); 

    } 


     // BC p=new BC(name,age,add); 
    //displayDetails(); 
     // System.out.println( p.toString()); 
    public static void displayDetail() { 

     String name=null; 
     String add = null; 
     int age=0; 

     System.out.println("Name\tAdress\tAge"); 
     BC p=new BC(name,age,add); 
     for (int x = 0; x < mini.length; x++) { 
//Participant p1=mini[x]; 
      System.out.println(p.toString()); 
     } 
    } 



      public static String getName() { 
       Scanner sc = new Scanner(System.in); 
       String name; 
      System.out.print(" Participant name: "); 
       return name = sc.next(); 
      } 

     // System.out.print(" Participant name: "); 
     // name = sc.next(); 
      public static int getAge() { 
int age; 
       System.out.print(" Enter age "); 
       Scanner sc=new Scanner(System.in);; 
       return age= sc.nextInt(); 
      } 
     public static String getAdd() { 
      String add; 

      Scanner sc=new Scanner(System.in);; 
     System.out.print("Enter Address: "); 
     return add=sc.next(); 
     } 


    public static void setParticipant(){ 
     for (int x = 0; x < mini.length; x++) { 
     System.out.println("Enter loan details for customer " + (x + 1) + "..."); 
//Character loanType=getLoanType(); 
     //String loanType=getLoanType(); 
     String name=getName(); 
      String add=getAdd(); 
      int age=getAge(); 
     System.out.println(); 
     } 


     } 
    } 

    //another class 
public class BC { 


    private String name; 
    private int age; 
    private String address; 


    public BC(String strName, int intAge, String strAddress) { 

     name = strName; 
     age = intAge; 
    address = strAddress; 
    } 


    @Override 
    public String toString() { 
     return "Participant [name=" + name + ", age=" + age + ", address=" + address + "]"; 
    } 
public boolean equals(Participant value){ 
    boolean result; 
    if (name.equals(name) && age==value.age && address.equals(address)) 
      result=true; 
    else 
     result=false; 
    return result; 
     } 





} 

outPut: 
Enter loan details for customer 1... 
Participant name: hddgg 
Enter Address: 122 
Enter age 12 

Enter loan details for customer 2... 
Participant name: ddjkjde 
Enter Address: hdhhd23 
Enter age 12 
//Why I'm not getting right output 
Name Adress Age 
Participant [name=null, age=0, address=null] 
Participant [name=null, age=0, address=null] 

回答

1

您获得的输出,因为这种方法:

public static void displayDetail() { 

    String name=null; 
    String add = null; 
    int age=0; 

    System.out.println("Name\tAdress\tAge"); 
    BC p=new BC(name,age,add); 
    for (int x = 0; x < mini.length; x++) { 
     //Participant p1=mini[x]; 
     System.out.println(p.toString()); 
    } 
} 

您正在创建用空公元前姓名和年龄增加和0。然后你打印两次。

+0

我该怎么办? –

+0

你可以告诉我正确的方法 –

+0

我不确定你的意思是“正确的方法”。我认为你只需要修复你的displayDetail方法从“mini”而不是“p” – Thevenin