我是Java的新手,正在寻找Java的Scanner类的帮助。以下是问题所在。 我有一个包含多行的文本文件,每行有多对数字。这样每对数字都表示为(数字,数字)。例如3,3 6,4 7,9。所有这些多对数字通过空格彼此分开。以下是文本文件的示例。
1 2,3 3,2 4,5
2 1,3 4,2 6,13
3 1,2 4,2 5,5
我想要的是我可以单独检索每个数字。这样我就可以创建一个链表的数组了。以下是我到目前为止所实现的目标。
Scanner sc = new Scanner(new File("a.txt"));
Scanner lineSc;
String line;
Integer vertix = 0;
Integer length = 0;
sc.useDelimiter("\\n"); // For line feeds
while (sc.hasNextLine()) {
line = sc.nextLine();
lineSc = new Scanner(line);
lineSc.useDelimiter("\\s"); // For Whitespace
// What should i do here. How should i scan through considering the whitespace and comma
}
由于
答案 0 :(得分:1)
考虑使用正则表达式,并且很容易识别和处理不符合您期望的数据。
CharSequence inputStr = "2 1,3 4,2 6,13";
String patternStr = "(\\d)\\s+(\\d),";
// Compile and use regular expression
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
while (matcher.find()) {
// Get all groups for this match
for (int i=0; i<=matcher.groupCount(); i++) {
String groupStr = matcher.group(i);
}
}
第一组和第二组分别对应于每个配对中的第一个和第二个数字。
答案 1 :(得分:0)
1。使用扫描程序的nextLine()
方法从文件中获取每个文本的整行。
2。然后使用BreakIterator
类及其静态方法getCharacterInstance()
来获取单个字符,它将自动处理逗号,空格等。< /强>
3。 BreakIterator
还为您提供了许多灵活的方法来分离句子,单词等。
有关详细信息,请参阅:
http://docs.oracle.com/javase/6/docs/api/java/text/BreakIterator.html
答案 2 :(得分:0)
使用StringTokenizer类。 http://docs.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html
//this is in the while loop
//read each line
String line=sc.nextLine();
//create StringTokenizer, parsing with space and comma
StringTokenizer st1 = new StringTokenizer(line," ,");
如果您想要行中的所有数字
,那么当您调用nextToken()时,每个数字都会被读取为字符串while(st1.hasMoreTokens())
{
String temp=st1.nextToken();
//now if you want it as an integer
int digit=Integer.parseInt(temp);
//now you have the digit! insert it into the linkedlist or wherever you want
}
希望这有帮助!
答案 3 :(得分:0)
使用split(regex),更简单:
while (sc.hasNextLine()) {
final String[] line = sc.nextLine().split(" |,");
// What should i do here. How should i scan through considering the whitespace and comma
for(int num : line) {
// Do your job
}
}