我试图解决的问题来自《构建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;
}
}
它是equalsIgnoreCase
- 你缺少一个s
if (letter.equalsIgnoreCase("H")) {
2 - 您不是从文件Series1.txt
读取,而是读取字符串"Series1.txt"。用
Scanner input = new Scanner(new File("Series1.txt"));
调试,正如已经指出的那样,应该有所帮助。一个非常简单的替代方案:在测试其值之前添加System.out.println(letter);
...