ДЖАВА:Проблема с помещением значений в метод toString.
Вопрос
Мой методlocalestLargest(), как показано ниже, представляет собой метод поиска координат моего самого большого значения в моем массиве.У меня возникли проблемы с помещением возвращаемых значений в метод toString.Я понятия не имею, как отформатировать его в метод 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);
}
}
Моя попытка toString:
public String toString(){
return "[" + i + "][" + j + "]";
}
Код класса местоположения:
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;
}
Вот мой полный код моей программы:
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 + "]";
}
}
Решение
Если местонахождение является классом, вы определяете себя, вы должны также реализовать функцию TOSTRING (), а также
class Location{
int locationX,locationY;
public Location(int x,int y){
locationX = x;
locationY = y;
}
public String toString(){
return locationX+","+locationY;
}
}
. Другие советы
метод ToString имеет заголовок
public String toString()
.
Так что все, что вам нужно сделать, это сделать метод с этим заголовком, который возвращает строку.
Ваш вопрос довольно расплывчатый, как кто-то, указанный выше, и местоположение не является стандартным классом библиотеки, поэтому я не могу дать вам ничего конкретного, но что-то вроде
public String toString() {
return "(" + x + ", " + y + ")";
}
.
может быть близок к тому, что вы идете, если вы хотите, чтобы TOSTRING представлять точку.
Что вам нужно для преобразования в строку? В любом случае, что бы вы ни делали, добавьте это к концу:
.toString();
.
Вы можете сделать строкую переменную и вернуть ее:
StringVariable = <object>.toString();
.
или просто распечатать его или сделать что-нибудь еще
System.out.println(<object>.toString());
.
Надеюсь, что помогло.Если это не сказала мне об этом в комментариях!
Самый чистый способ поставить в свой класс:
public String toString(){
return String.format("[%i][%i]",row,column);
}
. Я не уверен, что это помогает, но, возможно, могут, возможно, коды ниже помогают
return new Location(i,j);
String toStringI = Integer.toString(i);
String ToStringj = integer.toString(j);
.
или с помощью String.valueof (myinteger);
Ваш класс "Именован: местоположение" устанавливается в целое число, если вы пытаетесь показать его в окне или вывести, что он попробует это?
System.out.println("",i,"",j);
.
что угодно; P
Вы должны использовать row
column
public String toString(){
return "[" + row + "][" + column + "]";
}
Вы не можете использовать i
j
потому что нет i
j
существует в Location
.
public String toString(){
return "[" + i + "][" + j + "]";
}
Пока это (ниже) ваш конструктор, а не тот, что у вас был раньше xLocation
и yLocation
, с тобой должно быть все в порядке.
Location(int row, int column){
this.row = row;
this.column = column;
}//end arg constructor