[英]Java While-Loop issue
我正在嘗試讀取包含此內容的.txt文件
lollipops 10 0.50 5.00
dietsoda 3 1.25 3.75
chocolatebar 20 0.75 15.00
它的作用是在名稱,數量,價格,總計中添加四列,並從txt文件中讀取它們。 然后計算小計,營業稅,然后總計。 我不確定如何計算小計,因為總和始終是最后一個值,在這種情況下,這是巧克力棒的總和。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class CatalogTester
{
public static double SALESTAX = 0.0625;
public static void main(String[] args) throws FileNotFoundException
{
String name ="";
int quantity = 0;
double price =0;
double total = 0;
double subtotal = 0;
double tax = 0;
double total_all = 0;
File inFile = new File("Catalog.txt");
Scanner in = new Scanner(inFile);
System.out.printf("%-30s %-10s %-10s %-10s\n", "Item", "Quantity","Price", "Total");
System.out.println();
System.out.println("Expected:Item Quantity Price Total");
while(in.hasNext()){
name = in.next();
quantity = in.nextInt();
price = in.nextDouble();
total = in.nextDouble();
System.out.printf("%-30s %-10d %-10.2f %-10.2f\n", name, quantity, price, total);
}
in.close();
tax = subtotal * SALESTAX;
total_all = subtotal+tax;
System.out.println("Expected:lollipops 10 0.50 5.00");
System.out.printf("%-52s %-10.2f\n", "SubTotal", subtotal);
System.out.println("Expected:SubTotal 23.75");
System.out.printf("%-52s %-10.2f\n", SALESTAX * 100 + "% Sales Tax",tax);
System.out.println("Expected:6.25% Sales Tax 1.48");
System.out.printf("%-52s %-10.2f\n", "Total", total_all);
System.out.println("Expected:Total 25.23");
}
}
您永遠不會重新分配line
。 因此,每次都檢查同一行。
String line = in.nextLine();
while(in.hasNextLine()){
int i = 0;
while(!Character.isDigit(line.charAt(i))) {i++;} //<--- same line
要解決此問題:
String line = in.nextLine();
while(in.hasNextLine()){
int i = 0;
while(!Character.isDigit(line.charAt(i))) {i++;}
//code
line = in.nextLine(); //added
}
您不會在while
循環中讀取任何行...
您可能錯過了說:
line = in.nextLine();
在循環的盡頭。
在while條件下移動線路分配。
String line = in.nextLine();
while(in.hasNextLine()){
改成
while(in.hasNextLine()){
String line = in.nextLine();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.