2017-07-16 70 views
0

嘿,新人在這裏需要幫助解決我的問題!我需要從循環打印先前的用戶輸入數據,問題是它會打印用戶輸入的最後一個數據。請擺脫一些光線,我的思緒漸漸黑暗。我感謝你們所有的答案。謝謝! 我的程序:(如果它是對不起噁心AF)需要幫助!從循環中打印以前的用戶輸入數據

package activity2; 

import java.util.Scanner; 
public class Activity2 { 


    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     String[] name = {"Milk","Juice","Energy drink","Water","Softdrink","Beer","Wine","Coffee"}; 
     int[] pnum = {0,1,2,3,4,5,6,7}; 
     double[] price = {300,100,220,120,200,350,400,130}; 
     String[] list = {"Enter product #: ","Enter quantity: ","Sub-total: "}; 
     double sum=0,q=0,v,s; 
     int sum2=0, w; 
     String z = ""; 
     int x,c = 0; 
     System.out.println("   Product Information"); 
     System.out.println("------------------------------------------"); 
     System.out.println("Name      Price"); 
     System.out.println("------------------------------------------"); 
     System.out.println(pnum[0]+"."+name[0]+"       "+price[0]); 
     System.out.println(pnum[1]+"."+name[1]+"      "+price[1]); 
     System.out.println(pnum[2]+"."+name[2]+"     "+price[2]); 
     System.out.println(pnum[3]+"."+name[3]+"      "+price[3]); 
     System.out.println(pnum[4]+"."+name[4]+"     "+price[4]); 
     System.out.println(pnum[5]+"."+name[5]+"       "+price[5]); 
     System.out.println(pnum[6]+"."+name[6]+"       "+price[6]); 
     System.out.println(pnum[7]+"."+name[7]+"      "+price[7]); 
     System.out.println("------------------------------------------"); 
     do{ 
     System.out.print("Enter number of products: "); 
     int a = sc.nextInt(); 

     for (x=0;x<a;x++){ 

      System.out.print(list[0]); 
      w = sc.nextInt(); 
      sum2 =w; 
      System.out.print(list[1]); 
      s = sc.nextDouble(); 
      q = s * price[w]; 
      System.out.println(list[2]+q); 
      sum +=q; 

     } 
     System.out.println("Total: " + sum); 
     System.out.print("Do you want another transaction?(y/n):"); 
     z = sc.next(); 
     x = a; 
     v = q; 
     System.out.println("Transaction Details"); 
     for(int t=0; t<x; t++){ 
     System.out.println(pnum[sum2]+"."+name[sum2]+"---------"+v); 
       } 
     System.out.println("TOTAL: " + sum); 
     System.out.print("Enter cash amount: "); 
     double i = sc.nextDouble(); 
     if(sum>i){ 
      System.out.println("Cash is insuffecient! Please try again:"); 
      System.out.print("Enter cash amount: "); 
      i = sc.nextDouble(); 
     } 
     double tc = i - sum; 
     System.out.print("Cash change"+tc); 
     } 
     while(z.equals("y")); 


    } 
} 

回答

0

一種方法是使用StringBuilder

(直接下面從鏈路引號)

「的StringBuilder對象是像字符串對象,不同的是它們可以被修改。在內部,這些對象被這樣容納的字符的序列變長數組處理。在任何時候,序列的長度和內容都可以通過方法調用來改變。「

您可以使用StringBuilder保存數據,然後一次打印所有內容。這使得生活更容易一些;-)

public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     String[] name = {"Milk","Juice","Energy drink","Water","Softdrink","Beer","Wine","Coffee"}; 
     int[] pnum = {0,1,2,3,4,5,6,7}; 
     double[] price = {300,100,220,120,200,350,400,130}; 
     String[] list = {"Enter product #: ","Enter quantity: ","Sub-total: "}; 
     double sum=0,q=0,v,s; 
     int sum2=0, w; 
     String z = ""; 
     int x,c = 0; 
     System.out.println("   Product Information"); 
     System.out.println("------------------------------------------"); 
     System.out.println("Name      Price"); 
     System.out.println("------------------------------------------"); 
     System.out.println(pnum[0]+"."+name[0]+"       "+price[0]); 
     System.out.println(pnum[1]+"."+name[1]+"      "+price[1]); 
     System.out.println(pnum[2]+"."+name[2]+"     "+price[2]); 
     System.out.println(pnum[3]+"."+name[3]+"      "+price[3]); 
     System.out.println(pnum[4]+"."+name[4]+"     "+price[4]); 
     System.out.println(pnum[5]+"."+name[5]+"       "+price[5]); 
     System.out.println(pnum[6]+"."+name[6]+"       "+price[6]); 
     System.out.println(pnum[7]+"."+name[7]+"      "+price[7]); 
     System.out.println("------------------------------------------"); 
     do{ 
     System.out.print("Enter number of products: "); 
     int a = sc.nextInt(); 

     StringBuilder sb = new StringBuilder(); 
     for (x=0;x<a;x++) { 

      System.out.print(list[0]); 
      w = sc.nextInt(); 
      sum2 =w; 
      System.out.print(list[1]); 
      s = sc.nextDouble(); 
      q = s * price[w]; 
      System.out.println(list[2]+q); 
      sb.append(pnum[sum2]+"."+name[sum2]+"---------"+q + "\n"); 
      sum +=q; 

     } 
     System.out.println("Total: " + sum); 
     System.out.print("Do you want another transaction?(y/n):"); 
     z = sc.next(); 
     x = a; 
     v = q; 
     System.out.println("Transaction Details"); 
     System.out.println(sb); 
     System.out.println("TOTAL: " + sum); 
     System.out.print("Enter cash amount: "); 
     double i = sc.nextDouble(); 
     if(sum>i){ 
      System.out.println("Cash is insuffecient! Please try again:"); 
      System.out.print("Enter cash amount: "); 
      i = sc.nextDouble(); 
     } 
     double tc = i - sum; 
     System.out.print("Cash change"+tc); 
     } 
     while(z.equals("y")); 


    } 

這會給你你正在尋找的輸出。

+0

非常感謝。有效!我還沒有解決stringbuilder,所以我會讀它。再次感謝你。 :) – JustaUser69

+0

@ JustaUser69請接受,如果這個答案對你最有用。通過檢查複選標記來接受。很高興我能幫上忙! – CodingNinja

0

問題是你沒有保存每個條目。如果您希望能夠在最後打印回來,則需要執行此操作。我並不確定你想要做什麼,但這至少應該讓你瞭解你需要做什麼才能打印出交易細節。你也確實需要更好地給你的變量命名。

import java.util.Scanner; 

public class Activity2 { 
public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    String[] name = {"Milk","Juice","Energy drink","Water","Softdrink","Beer","Wine","Coffee"}; 
    int[] pnum = {0,1,2,3,4,5,6,7}; 
    double[] price = {300,100,220,120,200,350,400,130}; 
    String[] list = {"Enter product #: ","Enter quantity: ","Sub-total: "}; 
    double sum=0,q=0,v,s; 
    int sum2=0, w; 
    String z = ""; 
    int x,c = 0; 
    System.out.println("   Product Information"); 
    System.out.println("------------------------------------------"); 
    System.out.println("Name      Price"); 
    System.out.println("------------------------------------------"); 
    System.out.println(pnum[0]+"."+name[0]+"       "+price[0]); 
    System.out.println(pnum[1]+"."+name[1]+"      "+price[1]); 
    System.out.println(pnum[2]+"."+name[2]+"     "+price[2]); 
    System.out.println(pnum[3]+"."+name[3]+"      "+price[3]); 
    System.out.println(pnum[4]+"."+name[4]+"     "+price[4]); 
    System.out.println(pnum[5]+"."+name[5]+"       "+price[5]); 
    System.out.println(pnum[6]+"."+name[6]+"       "+price[6]); 
    System.out.println(pnum[7]+"."+name[7]+"      "+price[7]); 
    System.out.println("------------------------------------------"); 
    do{ 
    System.out.print("Enter number of products: "); 
    int a = sc.nextInt(); 
    int[] productNum = new int[a]; 
    String[] products = new String[a]; 
    double[] prices = new double[a]; 
    for (x=0;x<a;x++){ 

     System.out.print(list[0]); 
     w = sc.nextInt(); 
     sum2 =w; 
     System.out.print(list[1]); 
     s = sc.nextDouble(); 
     q = s * price[w]; 
     System.out.println(list[2]+q); 
     sum +=q; 
     productNum[x] = w; 
     products[x] = name[w]; 
     prices[x] = q; 

    } 
    System.out.println("Total: " + sum); 
    System.out.print("Do you want another transaction?(y/n):"); 
    z = sc.next(); 
    x = a; 
    v = q; 
    System.out.println("Transaction Details"); 
    for(int t=0; t<x; t++){ 
    System.out.println(productNum[t]+"."+products[t]+"---------"+prices[t]); 
      } 
    System.out.println("TOTAL: " + sum); 
    System.out.print("Enter cash amount: "); 
    double i = sc.nextDouble(); 
    if(sum>i){ 
     System.out.println("Cash is insuffecient! Please try again:"); 
     System.out.print("Enter cash amount: "); 
     i = sc.nextDouble(); 
    } 
    double tc = i - sum; 
    System.out.print("Cash change"+tc); 
    } 
    while(z.equals("y")); 


    } 
} 
+0

是的,我真的這樣做,因爲我的變量名稱我們搞砸了,我完全有很多變量打印錯誤,我丟棄了這種方法。 xD謝謝你。 – JustaUser69