Pregunta

Mi método localizarLargest() como se muestra a continuación es un método para encontrar las coordenadas de mi valor más grande en mi matriz.Tengo problemas para poner los valores devueltos en un método toString.No tengo idea de cómo formatearlo en el método toString.

public Location locateLargest(int[][] x){ 
    int maxValue = getMax(x);
    for (int i = 0; i < x.length; i++){
        for (int j = 0; j < x.length; j++)
            if (x[i][j] == maxValue)
                return new Location(i,j);
    }
}

Mi intento de toString:

public String toString(){
    return "[" + i + "][" + j + "]";
}

código de clase de ubicación:

class Location {
    private int row;
    private int column;

    Location(){}//end constructor

    Location(int row, int column){
        this.row = row;
        this.column = column;
    }//end arg constructor

    public int getRow(){
        return this.row;
    }

    public int getColumn(){
        return this.column;
    }

Aquí está mi código completo para mi programa:

import java.util.Scanner;

public class LocationTest {

    public static void main(String[] args) {
        Scanner numberInput = new Scanner(System.in);
        System.out.println("Enter the number of rows and columns of the array: ");
        int row = numberInput.nextInt();
        int column = numberInput.nextInt();
        Location l1 = new Location(row, column);
        Location l2 = new Location();
        row = l1.getRow();
        column = l1.getColumn();
        int[][] array = new int[l1.getRow()][l1.getColumn()];
        System.out.println("Please enter the array elements: ");
        for (int r = 0; r < array.length; r++){
            for (int c = 0; c < array[r].length; c++){
                array[r][c] = numberInput.nextInt();
            }//end nested loop
        }//end for loop
        System.out.println(getMax(array));
        System.out.println(l1.locateLargest(array).toString());
    }

    public static int getMax(int[][] x){
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < x.length; i++){
            for (int j = 0; j < x[i].length; j++){
                if (x[i][j] > max)              
                    max = x[i][j];
            }
        }
        return max;
    }

    public Location locateLargest(int[][] x){ 
        int maxValue = getMax(x);
        for (int i = 0; i < x.length; i++){
            for (int j = 0; j < x.length; j++)
                if (x[i][j] == maxValue)
                    return new Location(i,j);
        }
        return null;
    }
}

class Location {
    private int row;
    private int column;

    Location(){}//end constructor
    Location(int row, int column){
        this.row = row;
        this.column = column;
    }//end arg constructor

    public int getRow(){
        return this.row;
    }

    public int getColumn(){
        return this.column;
    }

    public String toString(){
        return "[" + row + "][" + column + "]";
    }
}
¿Fue útil?

Solución

Si la ubicación es una clase, se definió usted mismo, debe implementar la función Tostring () también

class Location{
    int locationX,locationY;    

    public Location(int x,int y){
        locationX = x;
        locationY = y;
    }

    public String toString(){
        return locationX+","+locationY;
    }
}

Otros consejos

Un método de tostración tiene el encabezado

public String toString()

Por lo tanto, todo lo que necesita hacer es hacer un método con ese encabezado que devuelva una cadena.

Su pregunta es bastante vaga como alguien se señaló anteriormente, y la ubicación no es una clase de biblioteca estándar, por lo que no puedo darle nada específico, pero algo así como

public String toString() {
    return "(" + x + ", " + y + ")";
}

Podría estar cerca de lo que va si desea que un TOSTRING represente un punto.

¿Qué necesita convertir en cadena? De todos modos, sea lo que haga, agregue esto hasta el final:

.toString();

Puede hacer una variable de cadena y devolverlo:

StringVariable = <object>.toString();

o simplemente imprimiéndolo o haga cualquier otra cosa

System.out.println(<object>.toString());

Espero que eso haya ayudado.Si no me lo contó en los comentarios!

La forma más limpia sería poner en su clase:

public String toString(){
        return String.format("[%i][%i]",row,column);
    }

No estoy seguro de si eso es ayuda, pero tal vez quizás los códigos a continuación ayuda a

  return new Location(i,j);
 String toStringI = Integer.toString(i); 
    String ToStringj = integer.toString(j);

o usando String.Valueof (MyIinteger);

Su clase "Nombrada: Ubicación" está configurada en INTEGER Si está intentando mostrarlo en la ventana o la salida, ¡intente esto.

System.out.println("",i,"",j);

lo que sea; P

Deberías usar row column

public String toString(){
    return "[" + row + "][" + column + "]";
}

no puedes usar i j porque no i j existe en Location.

public String toString(){
    return "[" + i + "][" + j + "]";
}

Siempre y cuando este (abajo) sea tu constructor y no el que tenías antes con xLocation y yLocation, deberías estar bien.

Location(int row, int column){
    this.row = row;
    this.column = column;
}//end arg constructor
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top