今天我正在研究一个读取宪法副本的程序,允许用户输入三个单词并在文件中检查这三个单词并输出这三个特定单词出现的次数!但是,除了正确放置一行之外,我的代码是正确的。我不断输出我的整数的默认值,我将在下面用我的代码发布。
代码:
import java.util.*;
import java.io.*;
public class USConstitution
{
public static void main(String[] args) throws Exception {
Scanner usConst = new Scanner (new File ("constitution.txt"));
System.out.println("Enter three words: ");
Scanner keyboard = new Scanner(System.in);
String wrd1 = keyboard.next();
String wrd2 = keyboard.next();
String wrd3 = keyboard.next();
int num1 = 0;
int num2 = 0;
int num3 = 0;
//BREAK ---------------
while(usConst.hasNext()){
String check = usConst.next();
if(check.equals(wrd1)){
num1++;
}
else if(check.equals(wrd2)){
num2++;
}
else if(check.equals(wrd3)){
num3++;
}
System.out.print("The word " + wrd1 + " shows up " + num1 + " times in the file!");
break;
}
}
}
我的输出包含以下内容:
输入三个词:president java test总统这个词在文件中出现了0次!
我知道其他两个变量没有被打印,当我将num1值更改为10时,此输出会有所不同,例如,它将输出10而不是文件中找到该单词的实际次数。如果有人知道我在做错了什么,我真的很感激一些帮助,非常感谢你花时间阅读这篇文章!祝你有美好的一天〜
答案 0 :(得分:0)
您的计划流程已关闭。你从扫描仪得到3个字,甚至没有检查它是否有更多的数据(虽然这主要是一个不同的问题)。然后在while循环中,你总是在最后打破而不会从你的宪法文件中删除更多的单词。另外,我怀疑你是否希望println语句在那里,因为它应该只在你得到最终结果时打印,而不是在你还在计算时。
答案 1 :(得分:0)
我相信你的while循环逻辑是错误的。在使用break
语句
你是不是要把system.out.print
拉到while循环之外而不是破坏,除非文件没有更多的字符串要读?
Scanner keyboard = new Scanner(System. in );
String wrd1 = keyboard.next();
String wrd2 = keyboard.next();
String wrd3 = keyboard.next();
int num1 = 0;
int num2 = 0;
int num3 = 0;
//BREAK ---------------
while (usConst.hasNext()) {
String check = usConst.next();
if (check.equals(wrd1)) {
num1++;
} else if (check.equals(wrd2)) {
num2++;
} else if (check.equals(wrd3)) {
num3++;
}
}
System.out.print("The word " + wrd1 + " shows up " + num1 + " times in the file!");