Java中的无限循环
因此,我试图查看输入,并计算符合特定标准的单词(或者更确切地说,排除我不想计算的单词)。错误出现在以下代码中:Java中的无限循环,java,stringtokenizer,Java,Stringtokenizer,因此,我试图查看输入,并计算符合特定标准的单词(或者更确切地说,排除我不想计算的单词)。错误出现在以下代码中: BufferedReader br; BufferedWriter bw; String line; int identifiers = 0; boolean count = false; try { br = new BufferedReader(new FileReader("A1.input"));
BufferedReader br;
BufferedWriter bw;
String line;
int identifiers = 0;
boolean count = false;
try
{
br = new BufferedReader(new FileReader("A1.input"));
line = br.readLine();
while(line != null)
{
StringTokenizer t = new StringTokenizer(line);
String word;
System.out.println(t.countTokens()); //for testing, keeps printing 6
for(int c = 0; c < t.countTokens(); c++)
{
word = t.nextToken();
count = true;
if(Character.isDigit(word.charAt(0))) //if word begins with a number
{
count = false; //do not count it
}
if(count == true)
{
for(String s : keywords)
{
if(s.equals(word)) //if the selected word is a keyword
{
count = false; //do not count it
}
}
}
System.out.println(word); //testing purposes
}
word = t.nextToken();
}
正如上面代码中的注释所述,第一个println语句重复打印6(向我表明while循环是无止境重复的)。第二个“testing purposes”println语句连续地重复打印
INT f2(INT x
。您对while()
的使用仅评估当前行;因此,它从不为null
。将其更改为if()
您对while()的使用
仅对当前行求值;因此,它从不为null
。将其更改为if()
看起来您从未真正读取文件的下一行。更改此位:
try
{
br = new BufferedReader(new FileReader("A1.input"));
line = br.readLine();
while(line != null)
{
为此:
try
{
br = new BufferedReader(new FileReader("A1.input"));
while((line = br.readLine()) != null)
{
看起来您从未真正读取文件的下一行。更改此位:
try
{
br = new BufferedReader(new FileReader("A1.input"));
line = br.readLine();
while(line != null)
{
为此:
try
{
br = new BufferedReader(new FileReader("A1.input"));
while((line = br.readLine()) != null)
{
确实,line=br.readLine();需要在循环的底部找到。@MeBigFatGuy:那也行。我所建议的只是我习惯于看到的范例,还有一个额外的好处,就是在回答时更加简洁。确实,line=br.readLine();需要在循环的底部找到。@MeBigFatGuy:那也行。我所建议的只是我习惯看到的范例,还有一个额外的好处,就是在回答时更加简洁。