2013-02-04 68 views
0

我試圖製作一個允許用戶爲超市制作目錄的Java應用程序,然後顯示用戶輸入到目錄中的所有產品。現在我遇到了填充用戶輸入時應填入的對象數組的問題。 輸出應該像下面(用戶輸入在粗體):在java中填充用戶輸入的對象數組

輸入產品描述(或#停止):冷凝粉狀水 輸入產品代碼:P3487 輸入產品單價: $ 2.50 輸入產品單元短語:每個包

輸入產品描述(或#停止):蒸餾水月光 輸入產品代碼:K3876 輸入產品單價:$ 3.00 輸入產品單位短語:十幾

輸入產品說明(或#停止):反重力丸 進入產品代碼:Z9983 輸入產品單價:$ 12.75 輸入產品單位短語:

輸入產品說明(或#停止):

你的目錄: P3487,冷凝水粉每包$ 2,50。 K3876,蒸餾月光,一打3.00美元。 Z9983,反重力丸,12.75 $爲60

,我寫的代碼:2類 類1:

public class Catalog { 

private String description ; 
private String code ; 
private double price ; 
private String phrase ; 

int counter = 0; 

private Catalog [] list = new Catalog [100]; 

public Catalog (String productDescription , String productCode , double productPrice , String productPhrase) 
{ 
    description = productDescription; 
    code = productCode; 
    price = productPrice; 
    phrase = productPhrase; 
} 

public void setDescription (String productDescription) 
{ 
    description = productDescription; 
} 

public String getDescription() 
{ 
    return description; 
} 

public void setCode (String productCode) 
{ 
    code = productCode; 
} 

public String getCode() 
{ 
    return code; 
} 

public void setPrice (double productPrice) 
{ 
    price = productPrice; 
} 

public double getPrice() 
{ 
    return price; 
} 

public void setPhrase (String productPhrase) 
{ 
    phrase = productPhrase; 
} 

public String getPhrase() 
{ 
    return phrase; 
} 

類2:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 


public class CatalogTest { 

/** 
* @param args 
* @throws IOException 
*/ 

public static void main(String[] args) throws IOException { 
    // TODO Auto-generated method stub 

    String name = null; 
    String code = null; 
    double price = 0.0; 
    String phrase = null; 



    BufferedReader input = new BufferedReader (new InputStreamReader (System.in)); 

    Catalog product = new Catalog(name,code,price,phrase); 

    Catalog [] productsArray = new Catalog [100]; 


    for (int i = 0 ; i < productsArray.length ; i ++) 
    { 


     System.out.println("Enter product description (or # to stop): "); 
     name = input.readLine(); 

     if (!("#".equals(name))) 
     { 

      productsArray [i] = product; 
      product.setDescription(name); 

      System.out.println("Enter product code: "); 
      code = input.readLine(); 
      productsArray [i] = product; 
      product.setCode(code); 


      System.out.println("Enter product unit price: "); 
      price = Double.parseDouble(input.readLine()); 
      productsArray [i] = product; 
      product.setPrice(price); 


      System.out.println("Enter product unit phrase: "); 
      phrase = input.readLine(); 
      productsArray [i] = product; 
      product.setPhrase(phrase); 



      productsArray [i] = new Catalog (name,code,price,phrase); 



     } 

     else 
     { 
      System.out.println("Your Catalog:"); 

      System.out.printf("%s, %s,$%.2f %s",product.getCode(),product.getDescription(),product.getPrice(),product 
        .getPhrase()); 
      break; 
     } 


    } 


} 
} 

輸出我得到(用戶輸入加粗): 輸入產品說明(或#停止): 濃縮粉狀水 請輸入產品編號: p3487 請輸入產品單價: 2。50 輸入產品單元短語: 每個包 輸入產品描述(或#停止): 蒸餾月光 輸入產品代碼: k3876 輸入產品單價: 輸入產品單位短語: 一打 輸入產品說明(或#停止): 您的產品: k3876,蒸餾式光束,一打3.00美元

所以任何幫助請??

+0

我還沒有完全閱讀你的問題,但你有沒有考慮過使用'ArrayList'而不是數組? – adarshr

+2

也許我很笨......但你的問題是什麼? –

+0

你期待什麼輸出? –

回答

0

這裏是更新的代碼,工程...

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class CatalogTest 
{ 

    /** 
    * @param args 
    * @throws IOException 
    */ 

    public static void main(String[] args) throws IOException 
    { 
     // TODO Auto-generated method stub 

     String name = null; 
     String code = null; 
     double price = 0.0; 
     String phrase = null; 

     BufferedReader input = new BufferedReader(new InputStreamReader(
      System.in)); 

     Catalog product = new Catalog(name, code, price, phrase); 

     Catalog[] productsArray = new Catalog[100]; 

     for (int i = 0; i < productsArray.length; i++) 
     { 

      System.out.println("Enter product description (or # to stop): "); 
      name = input.readLine(); 

      if (!("#".equals(name))) 
      { 

       productsArray[i] = product; 
       product.setDescription(name); 

       System.out.println("Enter product code: "); 
       code = input.readLine(); 
       productsArray[i] = product; 
       product.setCode(code); 

       System.out.println("Enter product unit price: "); 
       price = Double.parseDouble(input.readLine()); 
       productsArray[i] = product; 
       product.setPrice(price); 

       System.out.println("Enter product unit phrase: "); 
       phrase = input.readLine(); 
       productsArray[i] = product; 
       product.setPhrase(phrase); 

       productsArray[i] = new Catalog(name, code, price, phrase); 

      } 

      else 
      { 
       System.out.println("Your Catalog:"); 
       for (int j = 0; j < productsArray.length; j++) 
       { 
        if(productsArray[j]!=null) 
        { 
         System.out.printf("%s, %s,$%.2f %s,", 
          productsArray[j].getCode(), 
          productsArray[j].getDescription(), 
          productsArray[j].getPrice(), 
          productsArray[j].getPhrase()); 
        } 
       } 
       break; 
      } 

     } 

    } 
} 
+0

非常感謝你的回答非常有用它的工作 – Lula

+0

我還有一個問題,我可以使用sort()方法根據用戶輸入的代碼對數組進行排序嗎? – Lula

+1

您可以使目錄實現爲Comparable。在compareTo方法中,您使用邏輯來比較產品代碼。然後,您可以使用Collections.sort根據產品代碼進行排序.. – Amit

0

我不是已經給出,但在未來它可能是有益的調查ArrayListsVectors正確答案闡述。當您不確定需要存儲的項目數量時,兩者都是更好的數據結構,因爲它們是可增長的數據存儲區,即您在初始化時不需要定義它們的大小。

例如,在您最初的嘗試中,您將productsArray定義爲大小100.如果用戶想要輸入101個項目,該怎麼辦?使用Vector可以解決這個問題,因爲它可以隨時隨地增長或縮小。

我是一個3年的軟件開發的學生,當我開始使用向量在陣列編程問題變得輕鬆了很多工作,因爲靈活性載體的周圍報價:)

+0

感謝您提供這些信息我將盡快使用它們 – Lula

+0

我還有一個問題,我可以使用sort()方法根據代碼由用戶輸入? – Lula