Java androidstudio和netbeans中输入扫描和解析的不同行为
我使用NetBeans(测试基本代码)和androidstudio(实际应用程序)读取相同的管道分隔文件,得到不同的结果 以下是违规代码:Java androidstudio和netbeans中输入扫描和解析的不同行为,java,android,netbeans,Java,Android,Netbeans,我使用NetBeans(测试基本代码)和androidstudio(实际应用程序)读取相同的管道分隔文件,得到不同的结果 以下是违规代码: String URL = "http://.../CalendarUTF8(Dec2016).txt"; try { java.net.URL url = new java.net.URL(URL); Scanner input = new Scanner(url.openStream()); int i; for (i = 0; inp
String URL = "http://.../CalendarUTF8(Dec2016).txt";
try {
java.net.URL url = new java.net.URL(URL);
Scanner input = new Scanner(url.openStream());
int i;
for (i = 0; input.hasNext(); i++) {
String temp = input.nextLine();
eventCalendar[i] = temp.split("\\|",9);
}
}
catch (java.io.IOException ex) {
System.out.println("IO Errors");
}
代码在NetBeans中工作得非常好。在Android Studio中读取的相同文件随机中断中间的输入行,然后将其读取为2行。我检查了文件,在拆分的地方没有隐藏字符。如果我自己编写解析器,也可以很好地工作 问题似乎在于在for循环的头中使用hasNext()和在for循环的主体中使用nextLine()。当我用hasNextLine()替换hasNext()时,我的记录计数匹配。我不明白为什么,因为hasNext()应该看一些东西,而不是改变,但它起作用了 你能把你的文件也寄出去吗<代码>扫描仪s=新扫描仪(输入)。使用分隔符(“|”)使用此选项将分隔符设置为
|
,因为默认情况下,分隔符是空白
使用分隔符
接收模式
对象。因此,您应该转义|
符号。所以:Scanner s=新的扫描仪(输入)。使用分隔符(“\\\\”)
您可以使用此URL获取文件:“”,但正如我所说的,这种情况并非总是发生,只是偶尔发生,而且发生在没有什么奇怪的地方。例如,字符串“…4th St…”以“…4t”和“h St…”分隔,在记事本++中检查是否有特殊字符,但没有。此外,当您说“delimiter”时,您是指字符串(“|”)内的分隔符还是记录/行结尾的分隔符(例如CR LF等)?我不认为我对前者有什么问题,split()很好用。是nextLine()给了我一个问题。最简单的测试方法是读取文件并查看您得到了多少记录。如果超过967,则发生断线。我想,我可以提供更好的测试程序: