2016-04-07 32 views
1

Metin dosyasından toplam tutarı hesaplamaya çalışıyorum, şimdiye kadar fiyatları bastım ama toplam miktarı hesaplamak için kullanılacak koddan emin değilim.Jlist hesaplaması

OrderPage.setText("Diner Number | Food | Quantity | Calories | Price"); 
     DefaultListModel listModel = new DefaultListModel(); 
        try { 
         FileReader file = new FileReader("savedFoodData.txt"); 
         BufferedReader buffer = new BufferedReader(file); 

         while ((line = buffer.readLine()) != null) { 
           outputDinerChoice = line; 
           outputDinerChoice = outputDinerChoice.replaceAll(",", "  ");      
           listModel.addElement(outputDinerChoice);  
           dinersChoice = outputDinerChoice.split("  "); 
           System.out.println(dinersChoice[4]); 
          } 

böyle yola olurdu dosyası ("savedFoodData.txt"):

1/2,Burger,1,156kcal,£2.70 
1/2,Chicken,1,159kcal,£3.90 
1/2,Steak,1,50kcal,£7.00 
2/2,Noodles,1,398kcal,£4.90 
2/2,Pizza,1,156kcal,£2.70 
1/2,Beer,1,20kcal,£4.10 
1/2,Coke Tea,1,5kcal,£1.50 

Ve bu kod

System.out.println(dinersChoice[4]); 
£2.70 
£3.90 
£7.00 
£4.90 
£2.70 
£4.10 
£1.50 
çıktısını olacaktır:

"Diner Number | Food | Quantity | Calories | Price" 

içerecektir Hangi

Ve ben t hesaplamak çalışıyorum Bundan toplam fiyat, bunu nasıl yapardım?

+0

İpucu: Use substring ve 'Double.parseDouble()' – Mordechai

cevap

0
  • Bölünmüş sütun diziye hattı => "2.70"
  • dönüştürme "£ 2.70" dönüştürme
  • kullanımı altdizgesi "2.70" Double.parseDouble kullanılarak bir dizi()
için

Örnek

String line = "1/2,Burger,1,156kcal,£2.70"; 
String[] columns = line.split(","); 
double value = Double.parseDouble(columns[4].substring(1)); 

entegre

double sum = 0; 
while ((line = buffer.readLine()) != null) { 
    String[] columns = lines.split(","); 
    sum = sum + Double.parseDouble(columns[4].substring(1)); 
} 
+0

Kaydedilen her dosya için dize satırını yazmak zorunda mıyım? –

+0

Bu sadece kendi kendine yeten bir örnekti, güncellenmiş cevabımı görün ... – Adam

+0

Yardımın için teşekkürler, şimdi neyi yanlış yaptığımı ve gelecekte ne yapacağımı anlıyorum ama sebepten dolayı toplam 26.799999999999997 gibi çıkıyor, nasıl olursa olsun Tamir etmek için? –