Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayIndexOutofBounds,救命?_Java - Fatal编程技术网

Java ArrayIndexOutofBounds,救命?

Java ArrayIndexOutofBounds,救命?,java,Java,问题出在int[][]tam=newint[a][b]。只是那条线。我是java新手,来自C++背景。 //"Exercitiul" 3 Scanner input = new Scanner(System.in);//instructiune scanner DataInputStream dis4 = new DataInputStream(System.in); DataInputStream dis5 = new DataInputStream(System.in); String st

问题出在
int[][]tam=newint[a][b]
。只是那条线。我是java新手,来自C++背景。
//"Exercitiul" 3
Scanner input = new Scanner(System.in);//instructiune scanner
DataInputStream dis4 = new DataInputStream(System.in);
DataInputStream dis5 = new DataInputStream(System.in);
String st1 = null;
String st2 = null;
try{
  System.out.println("Introduceti numarul de Randuri"); 
  st1 = dis4.readLine();
  System.out.println("Introduceti numarul de Coloane"); 
  st2 = dis5.readLine();
}

catch (IOException ioe) {
ioe.printStackTrace();
}

int a = Integer.parseInt(st1);
int b = Integer.parseInt(st2);

int [][]tam = new int[a][b];

System.out.println("Verificare " + tam[a][b]);
System.out.println("Introduceti Elementele Matricei ");

for (int m=0 ; m < tam.length ; m++)
for  (int n=0 ; n < tam[i].length ; n++){

tam[m][n] = input.nextInt();//instructiune scanner
}

System.out.println("Matricea A: ");
for (int m=0 ; m < tam.length ; m++)
{     System.out.println();
    for  (int n=0 ; n < tam[i].length ; n++)
        System.out.print(tam[m][n]+" ");
          }

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Program.main(Program.java:95)
/“Exercitiul”3
扫描仪输入=新扫描仪(System.in)//指示扫描仪
DataInputStream dis4=新的DataInputStream(System.in);
DataInputStream dis5=新的DataInputStream(System.in);
字符串st1=null;
字符串st2=null;
试一试{
System.out.println(“引见numarul de Randuri”);
st1=dis4.readLine();
System.out.println(“路环线介绍”);
st2=dis5.readLine();
}
捕获(ioe异常ioe){
ioe.printStackTrace();
}
inta=Integer.parseInt(st1);
intb=Integer.parseInt(st2);
int[]tam=新int[a][b];
System.out.println(“验证关怀”+tam[a][b]);
System.out.println(“简介元素矩阵”);
对于(int m=0;m
如果该行引发异常,则可能意味着a或b是如果该行引发异常,则可能意味着a或b是如果数组
a
具有长度
n
,则元素是
a[0]
a[n-1]
。 在您的例子中,您将
tam
分配为
int[a][b]
,矩阵的右下角元素是
tam[a-1][b-1]


另外,我认为您希望
m
作为(int n=0;n的索引,而不是
I
如果数组
a
具有长度
n
,则元素是
a[0]
a[n-1]
。 在您的例子中,您将
tam
分配为
int[a][b]
,矩阵的右下角元素是
tam[a-1][b-1]


此外,我认为您希望
m
作为(int n=0;n中的索引,而不是
I
,我认为问题相当严重

System.out.println("Verificare " + tam[a][b]);

tam初始化为
new int[a][b]
。这意味着它的第一个索引从0到a-1,第二个索引从0到b-1。在Java中,数组索引从0开始。因此,
tam[a][b]
确实是超出了范围。

我认为问题相当严重

System.out.println("Verificare " + tam[a][b]);

tam初始化为
new int[a][b]
。这意味着它的第一个索引从0到a-1,第二个索引从0到b-1。在Java中,数组索引从0开始。因此,
tam[a][b]
确实超出了范围。

i变量来自哪里?在使用它的两个地方不应该有m吗?i变量来自哪里?在使用它的两个地方不应该有m吗?我给它的输入大于0,我给它的输入大于0,即使我删除了那行,同样的事情也会发生,因为以后还有其他错误。异常发生的那一行告诉您错误在哪里,Vlad的答案也是如此。即使我删除了那一行,同样的事情也会发生,因为您以后还有其他错误。异常发生的那一行告诉您错误在哪里,Vlad的答案也是如此。