从文件中翻转硬币



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

编写一个名为coinFlip的方法,该方法接受一个扫描仪,该扫描仪表示正面(H(或反面(T(的硬币翻转的输入文件。将每行视为一组单独的硬币掷出,并输出该行中正面的数量和百分比。如果超过 50%,请打印"你赢了!

请考虑以下文件:
嘻嘻
哈T t t t h H

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

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

当我运行代码时,它只输出:"0 头 (0.0("。所以我假设它由于某种原因永远不会进入第二个 while 循环,或者我错误地使用了"下一个"方法。

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 -

它是equalsIgnoreCase - 你缺少一个s

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

2 - 您不是从文件Series1.txt读取,而是读取字符串"Series1.txt"。用

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

调试,正如已经指出的那样,应该有所帮助。一个非常简单的替代方案:在测试其值之前添加System.out.println(letter);...

最新更新