我试图解决的问题来自构建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;
}
}
答案 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);
...