我正在写一个java代码,它从列中的文件中读取文本,但是当试图运行该代码时,会出现越界错误。只有当我试图使用命令: arr[1](或更高的索引)时才会发生这种情况。奇怪的是,下面的代码工作正常:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadingColumns {
public static void run(){
BufferedReader br = null;
String[] characters = new String[10000];
try {
String sCurrentLine;
br = new BufferedReader(new FileReader("C:\\Users\\wyn_005 trans.tif.txt"));
int i=0;
while ((sCurrentLine = br.readLine()) != null) {
String[] arr = sCurrentLine.split("\\t");
for(int j=0;j<arr.length;j++){
System.out.println(arr[j]);
}
// System.out.println(sCurrentLine);
// System.out.println("arr[0] = " + arr[0]);
// System.out.println(arr[2]);
i++;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}}
循环工作正常(给整行一个元素一个,然后下一行在下一行,循环迭代等等),如果我试图通过使用arr[0]输入也很好,但只给第一列。
`System.out.println(sCurrentLine)`
把整个文件都给了我,所以我知道它没有遗漏任何东西。该文件大致如下所示:
Frame X1 Y1 Marker1 R1 X2 Y2 Marker2 R2...
Data from 1 to 20
1 1.0 2.0 3.2 4.0 3.1 * 5.5
2 3.3 1.2 4.1 1.1 2.1 1.3
...
(抱歉,我不知道如何在这里用制表符分隔列,所以它是用空格分隔的。)有谁能告诉我为什么会这样吗?我对java相当陌生,所以可能我错过了一些简单的东西。
编辑:异常被抛出时,我取消注释行System.out.println(arr[2]); System.out.println(arr.length);给133在每一次迭代。
您的文件可能不包含制表符,而是4个空格来代替缩进列。这就是为什么按制表符拆分会给你一个大小为1的数组。试着按照这种模式拆分:
sCurrentLine.split("\\s+");
此模式包括空格和制表符。
你在开账单。如果arr[1]有效,但arr[0]有效,则sCurrentLine不包含选项卡。如果你正在使用
for(int j=0;j<arr.length;j++){
那么在循环中,你不应该使用任何东西
rank ▲ ✰ vote url 21 688 153 1320 url 在循环中获取索引(数组下标) 有人知道如何获取列表的索引值吗: ints = [8, 23, 45, 12, 78] 当我循环这个列表时如何获得它的索引下标? 如果像C或者PHP那样加入一个状态变量那就太不pythonic了. 最好的选择就是用内建函数enumerate for idx, val in enumerate
我正在Android上工作。我有一个如下所示的字符串。 字符串str=“@test1 | test2|test3@test4|测试5 |测试6|test7@test8|测试9 |测试10|test11@test12|测试13 |测试14|test15@......“ 我正在使用字符串[]str1=str.split([@])将上述字符串拆分为“@” 以便最终结果 str1[0]=测试1 |测试2
问题内容: 我要寻找一个量化的方式来索引的索引。 例如: 我想建立一个新的数组,以便该数组中的每一行(i)都是array的row(i),并由数组inds(i)的行索引。我想要的输出是: 我可以通过循环来实现: 但我正在寻找一种纯矢量化的解决方案。 问题答案: 使用索引数组对另一个数组进行索引时,每个索引数组的形状应与 输出 数组的形状匹配。您希望列索引匹配,并且您希望行索引匹配输出的行,例如: 由
我正在为一个老式电话计划编写Java代码,所以我有: 频段类: 速率类: 我想在Rate类中编写一个方法,如果给定一周中的某一天,它将返回一个由该周中某一天的带组成的带数组。 我写的是: 但是我一直得到一个索引越界异常(索引2越界,长度为2)。 我怎么能解决这个?
我是Java的新手,正在运行下面的代码,它运行得很好,但是我得到了一个数组索引超出了界限的异常。有人能帮我理解一下为什么我会得到这个例外吗?