JAVA:Problemas para poner valores en un método toString
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 + "]";
}
}
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