2014-02-22 25 views
0

有沒有辦法使用相同的提示,但再次存儲用戶數據而不創建第二個變量?這一切都需要以類似的方式表同時顯示(因此標籤)Java:使用相同的掃描器變量來存儲多組條目

//Variables 
     Scanner user = new Scanner(System.in); 
     NumberFormat percent = NumberFormat.getPercentInstance(); 
     int num = 1; 
     int group = 10, string = 12, formatting = 8; 



     while (num <= 3) 

     { 




     System.out.print("Please enter name of assignment 1: "); 
     String assignment = user.nextLine().toUpperCase(); 
     System.out.print("Please enter points earned: "); 
     double earned = user.nextDouble(); 
     System.out.print("Please enter total points possible: "); 
     double total = user.nextDouble(); 

     } 

    System.out.print(assignment + "\t\t"); 
    System.out.print(earned + "\t"); 
    System.out.print(total + "\t\t"); 
    System.out.print(percent.format(earned/total) + "\n\t"); 


when looping it is skipping the "Please enter name of assignment prompt: 

    Please enter name of assignment 2: Please enter points earned: 



I expected the output to be: 

    Please enter name of assignment 1: Practice Exam 
    Please enter points earned: 89 
    Please enter total points possible: 125 

    Please enter name of assignment 2: FooBar 
    Please enter points earned: 42 
+1

你已經張貼什麼看起來並不像一個錯誤信息,您可以提供具體的ERR或控制檯給的消息? –

+0

'String assignment = user.nextLine()。toUpperCase();;'爲什麼在這裏有兩個分號?是錯字還是什麼? – Baby

+0

沒有錯誤信息對不起,讓我改述,當它循環時跳過了「請輸入任務提示的名稱\ – Joseph

回答

0

你就吃下了電話號碼,但你不消耗新行

試試這個

String assignment; 
    String exit=null; 
    double earned, total; 
    int i = 0; 
    Scanner scan = new Scanner(System.in); 

    while (!"Y".equalsIgnoreCase(exit)) { 
     i++; 
     System.out.print("Please enter name of assignment " + i + ": "); 
     assignment = scan.nextLine().toUpperCase(); //consumes string + \n 
     System.out.print("Please enter points earned: "); 
     earned = scan.nextDouble();//consumes double 
     scan.nextLine();//consumes \n 
     System.out.print("Please enter total points possible: "); 
     total = scan.nextDouble(); 
     scan.nextLine(); 

     System.out.print("Assignment\t"); 
     System.out.print("Score\t"); 
     System.out.print("Total  Points\t"); 

     System.out.print(assignment + "\t\t"); 
     System.out.print(earned + "\t"); 
     System.out.println(total + "\t\t"); 

     System.out.print("Stop?(Y/N)"); 
     exit = scan.nextLine(); 
    } 

回報

Please enter name of assignment 1: 1 
Please enter points earned: 1 
Please enter total points possible: 1 
Assignment Score Total  Points 1  1.0 1.0  
Stop?(Y/N)n 
Please enter name of assignment 2: 2 
Please enter points earned: 2 
Please enter total points possible: 2 
Assignment Score Total  Points 2  2.0 2.0  
Stop?(Y/N)y 
+0

有沒有辦法將結果存儲在一個臨時變量中以便後來累加? – Joseph

+0

當然,您可以將這些值累加到列表中(請參閱java.util .ArrayList) – Leo

+0

double [] calc; calc = new double [4]; \t \t calc [i] = earn; //數組元素與當前迭代循環重合 – Joseph