在另一个类中调用其他方法的方法无法正常工作

时间:2017-10-27 19:45:55

标签: java arrays matrix

所以我有两节课 它应该像一个数字电影商店,所以它应该返回用户名,电影名称和电影评级 这是界面之一:

import modelo.Matriz;

public class MenuConsola {

private Matriz userItem;

public MenuConsola(){

    String[] peliculas =  { "Toy story2", "Jumanji", "Amelie", "Wolverine", "Spider Man", "Yes Men", "Sabrina",
            "Tom and Huck", "Sudden Death", "GoldenEye" };
    String[] usuarios = { "Jhon", "Michael", "Jimmy", "Janis", "Carla", "Angie" };
    userItem = new Matriz(peliculas, usuarios);
    cargarMatriz();
    mostrarBanner();

    mostrarUsuarios();
    System.out.println("\n");
    mostrarPeliculas();
    //System.out.println(mostrarMatriz());
}

public void cargarMatriz(){
    userItem.cargarCalificaciones();
}

public String mostrarMatriz(){
    return userItem.mostrarMatriz();
}

static void appendChars(StringBuilder sb, char c, int count) {
    for (int i = 0; i < count; i++) {
        sb.append(c);
    }
}


public void mostrarUsuarios(){
    System.out.println("Usuarios:");

    String[] usuarios = userItem.obtenerUsuarios();
    int c = 1;
    for(String us : usuarios){
        System.out.println(c + ". " + us + "\t");
        c++;
    }
}

public void mostrarPeliculas(){
    System.out.println("Peliculas:");

    String[] pelis = userItem.obtenerPeliculas();
    int c = 1;
    for(String pel : pelis){
        System.out.println(c + ". " + pel + "\t");
        c++;
    }
}

**public void mostrarMayor(){
    System.out.println(userItem.darPeliculaMayorPromedio());
}

public void mostrarMenor(){
    System.out.println(userItem.darPeliculaMenorPromedio());
}**
public static void main(String[] args) {

    MenuConsola menu = new MenuConsola();

}

}

这是矩阵之一:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Matriz {

private String[] peliculas;
private String[] usuarios;

private int[][] calificaciones;

public Matriz(String[] pelis, String[] users) {
    this.peliculas = pelis;
    this.usuarios = users;
    calificaciones = new int[users.length][pelis.length];
}

public void cargarCalificaciones() {
    BufferedReader br;
    try {
        br = new BufferedReader(new FileReader("data/userItem.txt"));

        String linea = "";
        int fila = 0;
        while ((linea = br.readLine()) != null) {

            String[] data = linea.split("\t");
            int col = 0;
            for (String strRatig : data) {
                calificaciones[fila][col] = Integer.parseInt(strRatig);
                col++;
            }

            fila++;
        }

        br.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {

    }

}

public String mostrarMatriz(){

    String mensaje = "";
    for(int i = 0; i<calificaciones.length; i++){
        for(int j = 0; j < calificaciones[0].length; j++){
            mensaje += " " + calificaciones[i][j];
        }
        mensaje += "\n";
    }

    return (mensaje);
}


public String[] obtenerPeliculas() {
    return peliculas;
}


 */
public String[] obtenerUsuarios() {
    return usuarios;
}


**public String darPeliculaMayorPromedio**(){
    int mayor = calificaciones[0][0];
    String peliMayor = "";
    for ( int i = 0 ; i < calificaciones.length ; i++ )
    {
        for ( int j = 0 ; j < calificaciones[i].length ; j++ )
        {
        if ( calificaciones[i][j] > mayor )
            {
            mayor = calificaciones[i][j];
            peliMayor = peliculas[j];
            }
        }
    }
return peliMayor;
}


**public String darPeliculaMenorPromedio(){**
    int menor = calificaciones[0][0];
    String peliMenor = "";
    for ( int i = 0 ; i < calificaciones.length ; i++ )
    {
        for ( int j = 0 ; j < calificaciones[i].length ; j++ )
        {
        if ( calificaciones[i][j] < menor )
            {
            menor = calificaciones[i][j];
            peliMenor = peliculas[j];
            }
        }
    }
return peliMenor;
}

}

好的,这就是所有的代码,我不知道为什么它不打印什么?是不是初始化了数组或矩阵?编译时我没有给出任何错误,直到最后两个方法

才正常执行

2 个答案:

答案 0 :(得分:1)

我认为这可能是因为你没有启动你的数组,你的内容通过它所以它什么都不返回。尝试初始化数组中的值,然后您可能会发现您将得到一些结果

答案 1 :(得分:0)

似乎没有足够的代码来准确回答这个问题。 使用调试器逐步完成是最好的选择,但这里有一些我可以头脑风暴的潜在失败

  1. userItem不是静态的。因为你在封装的方法中调用userItem.darPeliculaMenorPromedio(),你需要有一个实例化的对象(我可以看到你没有)或者类需要是静态的(我认为它不是因为方法是不是静态的) - 这应该抛出一个错误,所以我假设它没有执行。

  2. 你永远不会执行morerarMayor和mostrarMenor的功能。我不能看到你的主要课程,以及里面有什么电话,但你需要在你的主要电话中调用和执行这两个功能。