我正在尝试从
形式的文件中输入数据1000
16 11
221 25
234 112
348 102
451 456
183 218
78 338
365 29
114 393
441 369
531 460
...
我遇到了麻烦,因为我一直收到IndexOutOfBounds异常或NoSuchElement异常。如何将数据放入数组中以便以后轻松对其进行排序?
public class shortestRoute
{
public static void printGrid(int[][] adjMat)
{
for(int i = 0; i < 1000; i++)
{
for(int j = 0; j < 2; j++)
{
System.out.printf("%5d", adjMat[i][j]);
}
System.out.println();
}
}
public static void main(String[] args) throws IOException
{
File file = new File("rtest1-2.dat");
Scanner scanner = new Scanner(file);
scanner.useDelimiter("\\s+");
int N = scanner.nextInt();
int[][] adjMat = new int[N][2];
for(int i=0; i < N; i++)
for (int j=0; j < 2; j++)
adjMat[i][j] = scanner.nextInt();
printGrid(adjMat);
}
}
答案 0 :(得分:2)
你正在迭代。你有1000行和2 Integer
,但你正在迭代超过1000x1000 for(int i=0; i < N; i++){
for (int j=0; j < 2; j++) {
adjMat[i][j] = scanner.nextInt();
}
}
。
只需将内部for循环切换为最大2:
int[][] adjMat = new int[N][2];
您还应该降低数组的分配:
import pandas as pd
import numpy as np
import scipy
np.random.seed(1)
xl = pd.DataFrame({'Concat' : np.arange(101,999), 'ships_x' : np.random.randint(1001,3000,size=898)})
yl = pd.DataFrame({'PickDate' : np.random.randint(1,8,size=10000),'Concat' : np.random.randint(101,999,size=10000), 'ships_x' : np.random.randint(101,300,size=10000), 'ships_y' : np.random.randint(1001,3000,size=10000)})
tempno = [np.random.randint(1,100,size=5)]
k=1
p = pd.DataFrame(0,index=np.arange(len(xl)),columns=['temp','cv']).astype(object)
for ib in [xb for xb in range(0,len(xl))]:
tempno1 = np.append(tempno,ib)
temp = list(set(tempno1))
temptab = yl[yl['Concat'].isin(np.array(xl['Concat'][tempno1]))].groupby('PickDate')['ships_x','ships_y'].sum().reset_index()
temptab['contri'] = temptab['ships_x']/temptab['ships_y']
p.ix[k-1,'cv'] = 1 if math.isnan(scipy.stats.variation(temptab['contri'])) else scipy.stats.variation(temptab['contri'])
p.ix[k-1,'temp'] = temp
k = k+1
答案 1 :(得分:1)
int N = scanner.nextInt();
这将获得N为1000。 但是在给定的示例中,您只得到22个整数,NoSuchElement错误就在第22个元素之后。
如果你提供足够的输入,那么你可以摆脱这个错误。干杯!