Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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 Can';找不到什么';代码有问题。数组下标越界异常_Java_Arrays - Fatal编程技术网

Java Can';找不到什么';代码有问题。数组下标越界异常

Java Can';找不到什么';代码有问题。数组下标越界异常,java,arrays,Java,Arrays,所以,我有这个家庭作业,代码做它应该做的,但是在某些情况下程序崩溃了。我已经经历了几个小时,我就是找不到一个办法来解决它。我有点头绪,但我无法解决问题。只是不知道怎么做。问题似乎在于y、z整数或soucetSloupce-soucetRadku方法,它们不知道问题的确切位置 package mazorku5; import java.util.Arrays; import java.util.Random; import java.util.Scanner; public class Mazo

所以,我有这个家庭作业,代码做它应该做的,但是在某些情况下程序崩溃了。我已经经历了几个小时,我就是找不到一个办法来解决它。我有点头绪,但我无法解决问题。只是不知道怎么做。问题似乎在于y、z整数或soucetSloupce-soucetRadku方法,它们不知道问题的确切位置

package mazorku5;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class MazorKU5 {
    public static int[][] dejPole(int b, int a){
    int[][] pole = new int[b][a];

    for (int i = 0; i < pole.length; i++){
        for (int j = 0; j < pole[i].length;j++){
            pole[i][j] = (int)(Math.random()*10);
        }
    }
    return pole;
}

public static void tiskPole(int [][] pole){
    for (int i = 0; i<pole.length; i++){
        for (int j = 0; j < pole[i].length;j++) {
            System.out.print (pole[i][j] + " ");
        }
    System.out.println(); 
    }
}

public static int soucetRadku(int[][]pole, int z){
    int suma=0;
    for (int j = 0; j < pole[z].length;j++){
        suma = suma + pole[z][j];
    }
    return suma;
}

public static int soucetSloupce(int[][]pole, int y){
    int suma=0;
    for (int j = 0; j < pole[y].length;j++){
        suma = suma + pole[j][y];
    }
    return suma;
}

public static float aritmPrumer(int[][]pole){
float suma=0;
    for (int i = 0; i<pole.length; i++){
        for (int j = 0; j < pole[i].length;j++){
            suma = suma + pole[i][j];
        }
    }
    return suma/(pole.length*pole[0].length);
}

public static int kolikX(int[][]pole, int x){
    int pocet=0;
    for (int i = 0; i<pole.length; i++){
        for (int j = 0; j < pole[i].length;j++){
            if (pole[i][j] == x)pocet++;
        }
    }
    return pocet;
}

public static int loser(int[][]pole, float prumer){
    int pocet=0;
    for (int i = 0; i<pole.length; i++){
        for (int j = 0; j < pole[i].length;j++){
            if (pole[i][j] < prumer)pocet++;
        }
    }
    return pocet;
}

public static void main(String[] args) {
    Random ran = new Random();
    Scanner sc = new Scanner(System.in);
    int i = 0;
    int znovu = 1;
    int z; 
    int y;
    int x;
    int loserP;
    float prumer;
    while (znovu==1) {
        System.out.println("Zadejte kolik ma mit pole sloupcu.");
        int a=sc.nextInt();
        while (a <= 0) {
            System.out.println("Zadejte kolik ma mit pole sloupcu.");
            a= sc.nextInt();
        }
        System.out.println("Zadejte kolik ma mit pole radku.");
        int b=sc.nextInt();
        while (b <= 0) {
            System.out.println("Zadejte kolik ma mit pole radku.");
            b= sc.nextInt();
        }
        int [][] pole = new int[b][a];
        pole= dejPole(b,a);
        tiskPole(pole);
        System.out.println("Radek?");
        z= sc.nextInt()-1;
        while (z > b || z < 0) {
            System.out.println("Radek?");
            z= sc.nextInt()-1;
        }
        System.out.println(soucetRadku(pole,z));
        System.out.println("Sloupec?");
        y= sc.nextInt()-1;
        while (y > a || y < 0) {
            System.out.println("Sloupec?");
            y= sc.nextInt()-1;
        }   
        System.out.println(soucetSloupce(pole,y));
        prumer=aritmPrumer(pole);
        System.out.println("Jake cislo hledame?");
        x = sc.nextInt();
        int pocetX=kolikX(pole,x);
        System.out.println(x + " mame: " + pocetX + ". ");
        System.out.println("Aritm. prumer je: " + prumer);
        loserP=loser(pole, prumer);
        System.out.println("Hodnot mensich nez prumer je: " + loserP);
        System.out.println("Znovu?(1)");
        znovu = sc.nextInt();
    }
}
}
包mazorku5;
导入java.util.array;
导入java.util.Random;
导入java.util.Scanner;
公共级MazorKU5{
公共静态int[][]devpole(intb,inta){
int[][]极点=新int[b][a];
对于(int i=0;i对于(int i=0;i你的指数在

public static int soucetSloupce(int[][]pole, int y){
   int suma=0; for (int j = 0; j < pole[y].length;j++){ // pole.length??
    suma = suma + pole[j][y]; //  y,j ??
   }
 }
publicstaticintsouctsloupce(int[][]极,inty){
intsuma=0;for(intj=0;j
它在哪一行崩溃?也可以看到崩溃在32或36它实际上对所有值都有效,除了y正好大于1的时候。不知道为什么。代码对那一个值有效。每当行数小于列数时,我认为它会崩溃。但是为什么?我能做些什么吗?我确实需要数组customizable.Edit:你是对的,所以似乎有两个问题,或者有一个我根本不明白。你能解释一下这个方法应该算什么吗?当然,它应该在得到数组后,在你选择的行和列中添加数字。还有一些其他的东西,但它们工作得很好。Soucet=sum.Sloupce=列,radku=行。