扫描字符串时如何使用扫描仪方法?
我有一个文本文件,它由几行空格分隔的小整数列组成。 我要扫描第一行,并为第一行中的每个整数执行一些操作。
String lineString = textScan.nextLine(); //scans the first line of the text file.
Scanner Line = new Scanner(lineString); //scans the String retrieved from the text file.
while (Line.hasNextInt())
{ //do stuff
}
所以我有一个扫描仪(textScan)扫描文本文件的第一行,然后将其保存为字符串。 然后我有第二个扫描器扫描字符串来检查它中的值是否是整数。
但while语句不允许我使用“Line.hasNextInt”来扫描字符串! 那么如何通过String行来扫描它是否有整数?
编辑:对不起,我的错误措辞。 循环将无限运行,所以我试图在循环之前创建一个打印语句:System.out.println(Line);它打印出这个错误:
java.util.Scanner [delimiters = p {javaWhitespace} +] [position = 0] [match valid = false] [need input = false] [source closed = false] [skipped = false] [group separator = ,] [decim al separator =。] [positive prefix =] [negative prefix = Q- E] [positive suffix =] [nega tive suffix =] [NaN string = Q? E] [infinity string = Q∞ E]
奇怪的是,它编译好吗?
输入文件:
5 4 4 3 5
4 2 2 5 3
5 2 5 2 3
5 4 3 2 3
5 4 2 2 5
4 4 2 4 2
3 3 5 3 5
5 2 4 5 2
4 4 5 4 2
2 4 3 5 2
3 3 3 5 3
2 4 5 3 4
3 5 5 4 3
3 4 2 2 4
5 5 5 4 4
3 4 4 4 5
3 2 4 2 4
5 4 4 2 4
5 3 5 2 3
我看到了这个问题。 您需要在循环内使用Line.nextInt()
来移动光标。
如果不是,则线总是指向开始,并且循环永远不会结束。
要正确使用它,请调用nextInt(),以便拾取下一个标记:
while (Line.hasNextInt())
{
System.out.println(Line.nextInt());
}
无限循环:
while (Line.hasNextInt())
{
System.out.println("Infinity");
}
您无需使用扫描仪来解决该问题。
public static void main(String[] args) {
String myString = "This is not int";
String myInt = "123456";
int copyOfInt = 0;
try {
copyOfInt = Integer.parseInt(myInt);
System.out.println(copyOfInt);
copyOfInt = Integer.parseInt(myString);
System.out.println(myString);
} catch (Exception e) {
System.out.println("Not int");
}
// Put this in a loop and you can keep doing stuff
}
或者你可以使用FileInputStream,我认为它更好。 这里是一个例子:
try (FileInputStream readFile = new FileInputStream(refFile);
InputStreamReader readIn = new InputStreamReader(readFile, "UTF8")) {
BufferedReader ReadBuffer = new BufferedReader(readIn);
String line = "";
while ((line = ReadBuffer.readLine()) != null) {
// Search my string of interest
if (line.equals("Potential/V, Current/A")) {
while ((line = ReadBuffer.readLine()) != null) {
// Get data after string of interest
// Use createDataType_1_Object() to get my data
myDataArray.add(createDataType_1_Object(line));
}
}
}
} catch (Exception e) {
System.out.println(e);
}
很抱歉,如果您在同一行中有多个整数,可以使用分隔符分隔它们并仍然使用单个扫描器,则可能会误解您的问题:
String yourFilename = "filename.txt";
File file = new File(yourFilename).useDelimiter(" ");
Scanner sn = new Scanner(file);
while(sn.hasNextInt()){
// Do your work here
}
链接地址: http://www.djcxy.com/p/96061.html