2017-11-15 1 views
-1

Ich habe vor kurzem eine Frage in Bezug auf meine Display() -Methode nur bestimmte Objekte angezeigt, und war in der Lage, das zu korrigieren einige Rückmeldungen, die ich in Bezug auf meine toString() -Methode erhalten habe. Allerdings musste ich meine IDNum zu einem int ändern, und jetzt wird meine displayMethod() überhaupt nicht angezeigt. Ich versuchte, meine Schritte zurückzuverfolgen und bin mir nicht sicher, was passiert ist.EDIT (Richter hart): Meine Display() -Methode wird nicht angezeigt und ich bin mir nicht sicher warum

Das Objekt-Array, das eine Identifikationsnummer, einen Umsatzbetrag und den Namen der Person enthalten soll. Wenn ich jedoch das Array anzeige, wird nichts angezeigt. Ich habe versucht, die for-Schleife, erweiterte for-Schleife und versuchte nur eine system.out.print Aufruf der get() -Methoden.

Ich weiß nicht, ob es etwas mit meiner Methode displayDatabase() zu tun hat, wie ich meine Scanner-Variable (USER_INPUT) verwende, um die eingegebenen Daten oder etwas mit meinen Konstruktoren zu tun.

Mein Konstruktor sieht wie folgt aus:

==================================== ==============

public class Salesperson 
    { 
    private String salesName; 
    private int salesID; 
    private double annualSales; 

    public Salesperson(String salesName, int salesIDNum, double yearlySales) 
    { 
     this.salesName = salesName; 
     salesID = salesIDNum; 
     annualSales = yearlySales; 
    } 

    public String getSalesName() 
    { 
     return salesName; 
    } 
    public void setSalesName(String salesName) 
    { 
     this.salesName = salesName; 
    } 
    public double getSalesID() 
    { 
     return salesID; 
    }  
    public void setSalesID(int salesIDNum) 
    { 
     salesID = salesIDNum; 
    } 
    public double getAnnualSales() 
    { 
     return annualSales; 
    } 
    public void setAnnualSales(double yearlySales) 
    { 
     annualSales = yearlySales; 
    } 
    @Override 
    public String toString() 
    { 
     return String.format("%s-%-10s%-10.2f", salesName, 
       salesID, annualSales); 
    } 

}

And my code for application looks like this: 

    import java.util.Arrays; 
    import java.util.Scanner; 
    public class CreateSalesperson 
    { 
     private static final Scanner USER_INPUT = new Scanner(System.in); 
     private static final int UPPER_SIZE_LIMIT = 20; 
     private static final int LOWER_SIZE_LIMIT = 0; 
     private static Salesperson[] salesStaffInDatabase = new 
     Salesperson[20]; 
     private static int numOfSalesPpl = 0; 
     private static boolean loop = true;  
     public static void main(String[] args) 
     { 
     String selection; 
     selection = programMenu(); 
     String response; 

      while(loop) 
       switch(selection) 
       { 
        case "A": 
         if(numOfSalesPpl == UPPER_SIZE_LIMIT) 
         { 
         System.out.print("Database has reached capacity."); 
         System.out.print(" Please delete a record before "); 
         System.out.println("adding to the database."); 
         } 
         else 
         { 
         addRecord();  
         } 
         break; 
        case "a": 
         if(numOfSalesPpl == UPPER_SIZE_LIMIT) 
         { 
         System.out.print("Database has reached capacity."); 
         System.out.print(" Please delete a record before "); 
         System.out.println("adding to the database."); 
         } 
         else 
         { 
         addRecord();  
         } 
         break; 
        case "C": 
         if(numOfSalesPpl == LOWER_SIZE_LIMIT) 
         { 
         System.out.print("Database is empty. "); 
         System.out.print("Please add a record."); 
         } 
         else 
         { 
         changeRecord();  
         } 
         break; 
        case "c": 
         if(numOfSalesPpl == LOWER_SIZE_LIMIT) 
         { 
         System.out.print("Database is empty. "); 
         System.out.print("Please add a record."); 
         } 
         else 
         { 
         changeRecord();  
         } 
         break; 
        case "E": 
        System.out.print("You Are Leaving Database"); 
        loop = false; 
        break; 
        case "e": 
        System.out.print("You Are Leaving Database"); 
        loop = false; 
        break; 
       } 
       } 

     public static void changeRecord() 
     { 
      String idNum; 
      String salesName; 
      double salesAmount; 
      String response; 

      System.out.print("Enter Sales ID: "); 
      idNum = USER_INPUT.nextLine();   
      if(isValidID(idNum)) 

      { 
      int searchResult = Arrays.binarySearch(salesStaffInDatabase, idNum); 
      System.out.println(salesStaffInDatabase[searchResult]); 
      } 
      else 
      { 
       System.out.println("Invalid Sales ID"); 
      } 
     } 
    public static boolean isValidID(String idNum) 
    { 
    boolean isValid= false; 
    for(int val = 0;val < numOfSalesPpl && !isValid; ++val) 
    { 
     if(salesStaffInDatabase[val].equals(idNum)) 
       { 
        isValid = true; 
       } 
    } 
    return isValid; 
    }  
    public static void addRecord() 
    { 
     int idNum; 
     String salesName; 
     double salesAmount; 
     String idNo; 
     String response; 

     do 
     { 
     System.out.print("Please enter sales ID: "); 
     idNum = USER_INPUT.nextInt(); 
     idNo = Integer.toString(idNum); 
     if(idNo.length() != 8) 

      System.out.println("Sales ID must be 8 digits long: "); 

     } 
     while(idNo.length() < 8 || idNo.length() > 8); 

     System.out.print("Name: "); 
     salesName = USER_INPUT.nextLine(); 
     USER_INPUT.nextLine(); 
     System.out.print("Sales Amount: "); 
     salesAmount = Double.parseDouble(USER_INPUT.nextLine()); 
     salesStaffInDatabase[numOfSalesPpl] = new 
    Salesperson(salesName,idNum,salesAmount); 

     salesStaffInDatabase[numOfSalesPpl].setSalesName(salesName); 
     salesStaffInDatabase[numOfSalesPpl].setSalesID(idNum); 
     salesStaffInDatabase[numOfSalesPpl].setAnnualSales(salesAmount); 



     System.out.print("Do you want to display database Y/N?: "); 
     response = USER_INPUT.nextLine(); 
     while(response.equalsIgnoreCase("Y")||response.equalsIgnoreCase("yes")) 
     { 
      displayDatabase(); 
     } 
    } 

    public static void displayDatabase() 
    { 

     for(int val=0;val < numOfSalesPpl; val++) 
     { 
       System.out.println(salesStaffInDatabase[val]); 
     } 

    }  
    public static String programMenu() 
    { 
    String selection; 
    do 
     { 

     System.out.println("(A)dd a Record"); 
     System.out.println("(C)hange a Record"); 
     System.out.println("(E)xit Database"); 
     System.out.print("Enter selection: "); 
     selection = USER_INPUT.nextLine(); 
     } 
     while(!selection.equalsIgnoreCase("a") && 
    !selection.equalsIgnoreCase("c") 
     && !selection.equalsIgnoreCase("e")); 
     return selection; 
    } 
    } 

===================== ========================

Antwort

0

In Java, wenn Sie ein Objekt als Zeichenfolge angezeigt werden soll, müssen Sie die toString() Methode überschreiben. Der von Ihnen veröffentlichte Code toString() des Verkäufers gibt nur die Werte salesID und anualSales zurück. Wenn Sie ein anderes Attribut anzeigen möchten, müssen Sie es in die Methode toString() einfügen.

Wenn Sie den ersten Namen auf den Anfang der Ausgabe angezeigt werden möchten, können Sie tun:

@Override public String toString() { 
    return String.format("%s - %-10s%-10.2f", salesFirstName, salesID, annualSales); 
} 
+0

Awesome, tat ich das und entschied auch nur Variable einen Namen anstelle von Vor- und Nachnamen zu verwenden. Es schien ein paar andere Probleme zu helfen – TigerWoods

0

bearbeiten toString() Methode in Salesperson Klasse:

 @Override 
public String toString() { 
    return "Salesperson{" + 
      "salesFirstName='" + salesFirstName + '\'' + 
      ", salesLastName='" + salesLastName + '\'' + 
      ", salesID='" + salesID + '\'' + 
      ", annualSales=" + String.format("%-10.2f", annualSales)+ 
      '}'; 
} 
Verwandte Themen