我有一个文本文件,其中包含几行由空格分隔的小整数列表。我要扫描第一行,并为第一行中的每个整数做一些事情。
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),它扫描文本文件的第一行,然后将其保存为String。然后我有了第二个扫描器,它扫描String来检查其中的值是否是整数。
但是 while 语句不允许我使用“行.has下一个Int”来扫描字符串!那么,我如何浏览字符串行以确定它是否有整数?
编辑:对不起,我的措辞错误。循环将无限运行,因此我尝试在循环之前创建一个打印语句:系统.out.println(行);,它打印出此错误:
java实用程序。扫描仪[delimiters=\p{javaWhitespace}][position=0][match valid=false][need input=false][source closed=false\][skipped=false][group separator=\,][decimal separator=.][positive prefix=][negative 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
很抱歉,您之前误解了您的问题,如果在同一行中有多个整数,您可以使用分隔符将其分割,但仍使用单个扫描仪:
String yourFilename = "filename.txt";
File file = new File(yourFilename).useDelimiter(" ");
Scanner sn = new Scanner(file);
while(sn.hasNextInt()){
// Do your work here
}
您没有必要使用扫描仪来解决这个问题。
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);
}
我明白问题所在。您需要使用Line。nextInt()
在循环内移动光标。
如果没有,Line总是指向开始,循环永远不会结束。
要正确使用它,请调用nextInt(),以便它拾取下一个标记:
while (Line.hasNextInt())
{
System.out.println(Line.nextInt());
}
无限循环:
while (Line.hasNextInt())
{
System.out.println("Infinity");
}
我试图为字符串创建一个扫描器方法,它只在用户输入的值不为空时才返回该值(空白,用户立即点击“Enter”等)。如果用户这样做,我希望打印出一条错误消息,并让循环再次返回开始,等待新的用户输入。如果正确,我希望方法返回正确的输入值。 我的代码是这样的:
我正试图用Java中的扫描器将一个字符串分成另外两个字符串。好像不起作用。我只能通过谷歌找到扫描仪用来读取控制台输入的例子。我从扫描仪的手册中找出了我做事情的方式,我不确定我错了什么。 第一个和第二个是空白的,我不知道为什么。
我目前正在执行游戏风险。在我的Board课程中,我阅读了三个不同的文本文件,其中包括国家、大陆及其邻近地区。当我构建一个新大陆时,它的构造器需要以下内容(字符串名、int-bonusArmies、ArrayList-memberCountries)。现在,我用扫描器从一个文本文件中读取,这个文件是这样组织的,它的名字,它拥有的奖金军队,每行的其余部分是它的成员国。 北美、5、阿拉斯加、阿尔伯塔省、
问题:编写一个名为wordWrap的方法,该方法接受表示输入文件的扫描器作为其参数,并将文件的每一行输出到控制台,对超过60个字符的所有行进行文字包装。例如,如果一行包含112个字符,则方法应将其替换为两行:一行包含前60个字符,另一行包含最后52个字符。包含217个字符的行应该被包装成四行:三行的长度为60,最后一行的长度为37。 我的代码: 输出中的问题: 预期产出: 生产产量: 我哪里做错了
问题内容: 我正在编写一个使用Event类的程序,该类中有一个日历实例和一个String类型的描述。创建事件的方法使用扫描仪获取月,日,年,小时,分钟和说明。我遇到的问题是Scanner.next()方法仅返回空格之前的第一个单词。因此,如果输入为“我的生日”,则该事件实例的描述就是“我的”。 我做了一些研究,发现人们使用Scanner.nextLine()解决此问题,但是当我尝试这样做时,它只是
我有一个字符串,我想检查它是否包含某些特定字符。如果包含此字符,则必须出现错误消息。 我有一个想法,并计划使用类“模式”和“匹配器”: 现在我需要一种正则表达式来检查我的字符串(或者换句话说,参数“source ceToScan”。正则表达式必须被过滤符号,如等等… 如何在示例中实现此解决方案?