Java While循环问题
我正在尝试读取一个.txt文件,其中包含Java While循环问题,java,while-loop,infinite-loop,Java,While Loop,Infinite Loop,我正在尝试读取一个.txt文件,其中包含 lollipops 10 0.50 5.00 dietsoda 3 1.25 3.75 chocolatebar 20 0.75 15.00 它将要做的是将名称、数量、价格、总数设为4列,并从txt文件中读取它们。然后计算小计、销售税和总计。我不知道如何计算小计,因为总数始终是最后一个值,在本例中是巧克力棒的总数 import java.io.File; import java.io.FileInputStream; import java.
lollipops 10 0.50 5.00
dietsoda 3 1.25 3.75
chocolatebar 20 0.75 15.00
它将要做的是将名称、数量、价格、总数设为4列,并从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");
}
}
您从未重新分配
行
。所以,每次都检查相同的第一行
String line = in.nextLine();
while(in.hasNextLine()){
int i = 0;
while(!Character.isDigit(line.charAt(i))) {i++;} //<--- same line
当循环时,您不会读取
中的任何行
你可能没有说:
line = in.nextLine();
接近循环末尾。在while条件下移动行分配
String line = in.nextLine();
while(in.hasNextLine()){
改为
while(in.hasNextLine()){
String line = in.nextLine();
在.nextLine()
中再次调用以在第一行之后读取更多行,是否缺少了这一位?解析这一相对简单的行所需的while循环量是一个巨大的代码气味。也许您应该研究扫描仪的其他方法,例如hasNextInt
,hasNextDouble
。。。
while(in.hasNextLine()){
String line = in.nextLine();