当前位置: 首页 > 知识库问答 >
问题:

如何让这个循环工作?文件未解决[重复]

贺博厚
2023-03-14

我有这个片段,我想知道如何遍历这个文件的令牌。正如你们所见,我用扫描仪读了一遍,我把infle当成了未解析的。这是可以理解的,因为infle是一个扫描仪,我的意思是,一个对象,但我该如何使循环遍历文件?其思想是读取包含多个单词的文件内容,将每个单词转换为小写,并将其全部放入哈希集中。

import java.io.File;
import java.util.*;

public class CheckSpelling{
    
    public static void main(String[] args) {
        //Create HashSet to store our data.
        HashSet<String> words = new HashSet<String>();
        
        try {
            //Read file words.txt
            Scanner filein = new Scanner (new File("/classes/s09/cs225/words.txt"));
                }
            catch(Exception e) {
                e.printStackTrace();
            }
        
        //While there exists another word next...
        while (filein.hasNext()) {
        //Go to next word 
            String tk = filein.next();
        //Convert that word into lower case... 
            tk.toLowerCase(); 
        //add the word to our collection of data. 
            words.add(tk);
            }    
        }
    }

您将其放入java类中,它将生成未解析的infle。请帮我克服这一点。如果您在复制异常时遇到问题,请告诉我。

提前谢谢。

共有2个答案

蒲功
2023-03-14

您将infile变量设置为未解析,因为您在try catch中声明了它。该变量的范围只是try catch,您正在尝试在外部使用它。

下面的示例不会抛出该错误。

import java.io.File;
import java.util.*;

public class CheckSpelling{

public static void main(String[] args) {
    //Create HashSet to store our data.
    HashSet<String> words = new HashSet<String>();

    try {
        //Read file words.txt
        Scanner filein = new Scanner (new File("/classes/s09/cs225/words.txt"));
        //While there exists another word next...
        while (filein.hasNext()) {
            //Go to next word
            String tk = filein.next();
            //Convert that word into lower case...
            tk.toLowerCase();
            //add the word to our collection of data.
            words.add(tk);
        }
    }
    catch(Exception e) {
        e.printStackTrace();
    }


}
}
百里泓
2023-03-14

这就是解决办法:你只需要更正括号。

 public static void main(String[] args) {
            //Create HashSet to store our data.
            HashSet<String> words = new HashSet<String>();
    
            try {
                //Read file words.txt
                Scanner filein = new Scanner (new File("your path"));
                //While there exists another word next...
                while (filein.hasNext()) {
                    //Go to next word
                    String tk = filein.next();
                    //Convert that word into lower case...
                    tk.toLowerCase();
                    //add the word to our collection of data.
                    words.add(tk);
                }
            }
            catch(Exception e) {
                e.printStackTrace();
            }
    }
 类似资料:
  • 我在同一个目录中有几个具有相同结构的。json文件。我想从每个json文件的一些键创建一个具有值的唯一csv文件。 通过一个文件循环,一切都正常。下面是脚本的快照:

  • 我正在尝试使用Netty4.1编写一个TCP服务器,它将承载数千个持久连接(TL)。x、 在性能测试期间,我们观察到,如果有几千个到服务器的连接,然后我们得到一个突发的连接,比如说另外几千个连接,这些新的SSL握手会使工作线程长时间处于繁忙状态,这会导致现有连接开始超时。在internet上提供的所有Netty示例中,我看到服务器是这样引导的: 我想知道我是否可以使用两个工人组而不是一个。因此,我

  • 顺便说一下,我搜索了一下这种情况,我认为我没有使用数组索引或者错误地使用了错误的指针。另外,我在这里看到了同样的问题,但我想知道为什么代码不能工作,然后自己解决这个问题。非常感谢大家的帮助。

  • 我有一个try-catch块,它检查来自Scanner的输入是否为int。但它只是一次又一次地循环询问要发送多少人。。然后说错误:不是一个数字。没有实际提示用户输入不同的数字。 输入int以外的内容时的输出示例。

  • 问题内容: 我想做的是请用户输入一些字符串以读入数组,然后要求用户输入该数量的字符串并将其读入数组。当我运行此代码时,它从不要求我在第一个for循环的第一个循环中输入内容,只打印出“字符串#0:字符串#1:”,然后我就可以输入文本了。为什么会这样,我做错了什么? 问题答案: 缓冲。 输入输入数量时,不会在输入缓冲区中占用换行符的位置。在for循环的迭代0中,缓冲区中已经有一行输入,并且可以立即完成

  • 问题内容: 这是一个非常简单的for循环: 我知道它主要如何工作,但是我不明白最后的工作方式:如果我是对的,它应该加1,但是当它打印出时,它先打印0,然后再打印1。 为什么为什么不从1开始就因为?为什么仍然只打印出原始值而不是原始值? 问题答案: 一个循环的工作方式如下: 初始化完成(在您的情况下;仅执行一次) 条件检查(此处),如果条件为假,则退出循环 大括号内的代码已执行(根据您的情况) 更新