我试图从文本文件中读取数据,然后将其存储到数组中。我假设每行有一个单词。我在这里得到了一个NoTouchElementException
:
while (s.hasNextLine())
{
text = text + s.next() + " ";
}
这是我的代码:
public class ReadNote
{
public static void main(String[]args)
{
String text = readString("CountryList.txt");
System.out.println(text);
String[] words = readArray("CountryList.txt");
for (int i = 0; i < words.length; i++)
{
System.out.println(words[i]);
}
}
public static String readString(String file)
{
String text = "";
try{
Scanner s = new Scanner(new File(file));
while (s.hasNextLine())
{
text = text + s.next() + " ";
}
} catch(FileNotFoundException e)
{
System.out.println("file not found ");
}
return text;
}
public static String[] readArray(String file)
{
int ctr = 0;
try {
Scanner s1 = new Scanner(new File(file));
while (s1.hasNextLine())
{
ctr = ctr+1;
s1.next();
}
String[] words = new String[ctr];
Scanner s2 = new Scanner(new File(file));
for ( int i = 0; i < ctr; i++)
{
words [i] = s2.next();
}
return words;
} catch (FileNotFoundException e) { }
return null;
}
}
这是留言。
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at ReadNote.readString(ReadNote.java:29)
at ReadNote.main(ReadNote.java:13)
据我所知,你的代码有两个问题:
Scanner s2
检查hasNextLine()
。Scanner
时,您需要检查是否有下一行带有hasNextLine()
,它会在EOF
返回null
。while
循环中s.nextLine()而不是s.next()
,因为您正在检查while(s1.hasNextLine())
。通常,您必须将您的. hasNext...
与您的. Next...
匹配。如本答复所述。
你的文件末尾有一个额外的换行符。
hasNextLine()
检查缓冲区中是否有其他线型hasNext()
检查缓冲区中是否有一个可解析的令牌,由扫描仪的分隔符分隔。
您应该将代码修改为以下内容之一
while (s.hasNext()) {
text = text + s.next() + " ";
}
while (s.hasNextLine()) {
text = text + s.nextLine() + " ";
}
对于您在readString
中遇到的特定异常:
while (s.hasNextLine()) {
text = text + s.next() + " ";
}
您需要在循环保护中调用s.hasNext()
,或者在正文中使用s.nextLine()
。
问题内容: 用最简单的方法,在java中如何创建一个文件并写入内容? 问题答案: 创建一个文本文件: 创建一个二进制文件: Java 7+用户可以使用Files该类来写入文件: 创建一个文本文件: 创建一个二进制文件:
问题内容: 我正在尝试使用AJAX创建一个页面,但是当我获得该页面并且它包含Javascript代码时,它不会执行。 为什么? 我的ajax页面中的简单代码: …并且它不执行它。我正在尝试使用Google Maps API并通过AJAX添加标记,因此,每添加一个标记,我都会执行一个AJAX页面,该页面将获取新标记,并将其存储在数据库中,并应将标记“动态”添加到地图中。 但是,由于我无法以这种方式执
问题内容: 我有一个基于jquery的单页webapp。它通过AJAX调用与RESTful Web服务进行通信。 我正在尝试完成以下任务: 将包含JSON数据的POST提交到REST URL。 如果请求指定JSON响应,则返回JSON。 如果请求指定PDF / XLS / etc响应,则返回可下载的二进制文件。 我现在有1&2,并且客户端jquery应用通过基于JSON数据创建DOM元素在网页上显
问题内容: 我希望能够从Java操作方法中的JSON字符串访问属性。只需说一下即可使用该字符串。下面是该字符串的示例: 在此字符串中,每个JSON对象都包含其他JSON对象的数组。目的是提取ID列表,其中任何给定对象都具有包含其他JSON对象的group属性。我将Google的Gson视为潜在的JSON插件。谁能提供某种形式的指导,说明如何从此JSON字符串生成Java? 问题答案: 我将Goog
问题内容: 在java中如何追加文本到存在的文件中? 问题答案: Java 7+ 如果你只需要执行一次,则使用Files类很容易: 注意:NoSuchFileException如果文件不存在,上述方法将抛出。它还不会自动追加换行符(追加到文本文件时通常会需要此换行符)。 但是,如果你要多次写入同一文件,则上述操作必须多次打开和关闭磁盘上的文件,这是一个缓慢的操作。在这种情况下,使用缓冲写入器更好:
问题内容: Java-通过POST方法发送HTTP参数? 问题答案: 在GET请求中,参数作为URL的一部分发送。 在POST请求中,将参数作为请求的正文发送到标头之后。 要使用进行POST,你需要在打开连接后将参数写入连接。 这段代码可以帮助你入门:
问题内容: 我很难找到最简单的方法来针对给定的JSON模式字符串验证JSON字符串(作为参考,这是在Java中运行在Android应用程序中)。 理想情况下,我只想传入JSON字符串和JSON模式字符串,并且它返回关于是否通过验证的布尔值。通过搜索,我发现了以下两个有前途的库可以完成此任务: http://jsontools.berlios.de/ https://github.com/fge/j
问题内容: 如何在JavaScript中将字符串转换为整数? 问题答案: 最简单的方法是使用本机函数: 如果这对您不起作用,则有 parseInt , 一元加号 , 带有floor的parseFloat 和 Math.round 方法。 parseInt: 一元加号,如果您的字符串已经是整数形式: 如果您的字符串是浮点数或可能是浮点数,并且您想要一个整数: 或者,如果您要多次使用Math.floo