2013-11-18 3 views
0

Мой метод locateLargest(), как показано ниже, - это метод поиска координат моего наибольшего значения в моем массиве. Мне трудно помещать возвращаемые значения в метод toString. Я не знаю, как отформатировать его в методе toString.JAVA: Ошибка ввода значений в метод 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 + "]"; 
    } 
} 
+1

Этого код не имеет никакого смысла. – duffymo

+1

Вы не разместили метод 'toString'. Или попытка в одном. Или класс, к которому вы пытаетесь добавить его. Или что-то действительно. –

+0

Как выглядит код для местоположения? – spydon

ответ

0

Если Местонахождение класс ваш определенный себя, вы должны реализовать функцию ToString(), а

class Location{ 
    int locationX,locationY;  

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

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

метод ToString имеет заголовок

public String toString() 

поэтому все, что вам нужно сделать, это сделать метод с этим заголовком, который возвращает строку.

Ваш вопрос довольно расплывчатым, как кто-то уже отмечалось выше, и местоположение не является стандартной библиотеки классов, поэтому я не могу дать вам что-нибудь конкретное, но что-то вроде

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

может быть очень близок к «если вы хотите, чтобы toString представляла точку.

0

Что вам нужно преобразовать в String? Во всяком случае, что бы вы ни делали, добавьте в конце:

.toString(); 

Вы можете сделать строку переменной и возвращает его:

StringVariable = <object>.toString(); 

или просто распечатать его или сделать что-нибудь еще

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

Надеюсь, что помогло. Если бы он не сказал мне об этом в комментариях!

0

Вы shoulrd использовать rowcolumn

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

Вы не можете использовать ij потому что ij не существует в Location.

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

Пока это (ниже) Ваш конструктор, а не то, что вы были раньше с xLocation и yLocation, вы должны быть хорошо.

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

им не уверен, что это помогает, но, может быть, может быть, коды ниже помогает

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

или с помощью String.valueOf (MyInteger);

Ваш класс "Named: Location" установлен в целое число, если вы пытаетесь показать его в окне или вывести его, попробуйте?

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

независимо, р

0

чистейший способ был бы положить в своем классе:

public String toString(){ 
     return String.format("[%i][%i]",row,column); 
    } 
Смежные вопросы