【问题标题】:How can I use Scanner in Java to read specific characters in a text file?如何使用 Java 中的 Scanner 读取文本文件中的特定字符?
【发布时间】:2012-07-20 07:23:06
【问题描述】:

基本上,我试图从一个连续的文本文件中读取 4 个字符。前两个是我将声明给变量的整数,接下来的两个是我需要分配给字符串或字符的字符,以便稍后打印出来。

我知道如何获取整数,但我阅读字符的主要问题是我不确定如何获取,并且其中一些字符可能是 ' ',或者只是一个空格。我不知道我应该如何获得一个空间作为一个角色。我需要稍后在程序中使用这些字符来打印一些东西。

到目前为止,我几乎只做了类似的事情

Scanner s = new Scanner(new FileInputStream("textfile.txt"));

int a = s.nextInt();
int b = s.nextInt();

但是如果我尝试使用 next 会出现错误,特别是如果我尝试获取 ' ' 字符。有什么帮助吗?

【问题讨论】:

  • 您可能必须使用较低级别的实用程序 (InputStreamReader),因为 Scanner 是一个基于分隔符解析数据的高级实用程序。

标签: java file text char


【解决方案1】:

我不知道是否有办法使用 Scanner 获取下一个字符,但如果我处于相同的情况,我将使用 nextLine() 然后对我获得的字符串进行操作。您可以使用 charAt() 来获取特定字符。很像:

String str = s.nextLine();

char c1 = str.charAt(0); 

【讨论】:

    【解决方案2】:

    尝试使用next() 读取空格字符是行不通的,因为它是默认分隔符。

    您可以使用@987654321@ 将分隔符更改为输入数据中不应出现的内容。

    【讨论】:

      【解决方案3】:

      由于您正在读取 4 个连续字符,因此最好使用 InputStreamReader。

      InputStreamReader in = new InputStreamReader(new FileInputStream("textfile.txt")));
      
      int a = in.read()
      int b = in.read()
      char c = (char)in.read()
      char d = (char)in.read()
      

      如果您只使用 ASCII 字符,那么您可以跳过 InputStreamReader 并直接使用 FileInputStream。

      【讨论】:

      • 如果我没记错的话,read() 会读取一个字符。输入5030XY 会发生什么?
      • 你完全正确。这将读取 5、0、“3”和“0”。但正如问题所说,格式是顺序4个字符,其中2个是整数。我认为这意味着 2 个个位数的整数。否则不可能知道整数有多长。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-18
      • 1970-01-01
      • 2023-03-15
      • 2013-11-11
      • 2012-03-20
      相关资源
      最近更新 更多