2012-07-21 67 views
2

基本上,我试图从顺序文本文件中读取4个字符。前两个是整数,我将声明一个变量,接下来的两个是我需要分配给一个字符串或一个字符的字符,以便稍后打印出来。如何使用Java中的Scanner读取文本文件中的特定字符?

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

到目前为止,我已经差不多刚刚做类似

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

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

但后来我得到的错误,如果我尝试下使用,尤其是当我试图得到一个“”字符。请帮忙吗?

+0

您可能必须使用较低级别的实用程序('InputStreamReader'),因为'Scanner'是一个高级实用程序,可以根据分隔符来分析数据。 – nhahtdh 2012-07-21 03:09:28

回答

1

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

String str = s.nextLine(); 

char c1 = str.charAt(0); 
1

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

通过使用Scanner.useDelimiter(),可以将分隔符更改为不应出现在输入数据中的分隔符。

1

由于您正在阅读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。

+0

如果我没有弄错,'read()'读取单个字符。输入“5030XY”会发生什么? – Spooky 2012-07-21 11:38:47

+0

你完全正确。这将读取5,0,'3'和'0'。但正如问题所述,格式是4个字符的顺序,其中2个是整数。我认为这意味着2个单个数字的整数。否则,不可能知道整数有多长。 – Yunchi 2012-07-21 16:02:19

相关问题