计数硬币从文件翻转

时间:2018-01-09 00:16:53

标签: java file io java.util.scanner

我试图解决的问题来自构建Java程序一书,其格式如下:

  

编写一个名为coinFlip的方法,该方法接受一个扫描器,该扫描器表示头部(H)或尾部(T)的硬币翻转的输入文件。将每一行视为一组独立的硬币翻转,并输出该行中磁头的数量和百分比。如果它超过50%,打印"你赢了!"。

考虑以下文件:
H T H H T
T t t T h H

对于上面的输入,您的方法应该产生以下输出:

3头(60.0%)
你赢了!
2头(33.3%)

当我运行代码时,它只输出:" 0 head(0.0)"。所以我假设它由于某种原因从未进入第二个while循环,或者我正在使用" next"方法错了。

import java.io.*;
import java.util.*;
public class CoinFlip {
    public static void main(String[] args) throws FileNotFoundException{
          Scanner input = new Scanner("Series1.txt");
          PrintStream output = new PrintStream("Output.txt");
          coinFlip(input, output);
    }
    public static void coinFlip(Scanner input, PrintStream output) {
        while(input.hasNextLine()) {
            Scanner linesc = new Scanner(input.nextLine());
            int headCount = 0;
            int totalNums = 0;
            while(linesc.hasNext()) {
                String letter = linesc.next();
                if(letter.equalsIgnoreCase("H")) {
                   headCount++;
                }
            totalNums++;
            }

            double percent = findPercentage(headCount, totalNums);
            output.println(headCount + " heads " + "(" + percent +")");
            if(percent > 50.00) {
                output.println("You win!");
            }

        }
    }
    public static double findPercentage(int num1, int num2 ) {
       double percentage = (double)num1/num2 * 100;
       return percentage;
    }
}

1 个答案:

答案 0 :(得分:1)

1 - 它是equalsIgnoreCase - 您错过了s

if (letter.equalsIgnoreCase("H")) {

2 - 你没有从文件Series1.txt读取,你正在读取字符串“Series1.txt”。使用

Scanner input = new Scanner(new File("Series1.txt"));

调试,因为已经消化,应该有帮助。一个非常简单的选择:在测试其值之前添加System.out.println(letter); ...