2017-02-17 13 views
1

Я пытаюсь создать программу, которая позволяет вам узнать, сколько раз число занавесов происходит в массиве 2d. Одна из вещей, которую я должен сделать, - создать метод countInstence, который подсчитывает количество раз, когда число встречается, а также где они находятся в массиве. проблема у меня в том, как сделать я вывожу расположение числаПоиск местоположения числа в массиве 2d

public int[][] createArray(int rSize, int cSize) { 

    Random rnd = new Random(); 
    int[][] array = new int[rSize][cSize]; 

    for (int row = 0; row < array.length; row++) { 
     for (int col = 0; col < array[0].length; col++) { 
      array[row][col] = rnd.nextInt(26); 
     } 
    } 
    return array; 
} 

public void print2dArray(int[][] array) { 

    for (int row = 0; row < array.length; row++) { 
     for (int col = 0; col < array[0].length; col++) { 
      System.out.print(array[row][col] + "\t"); 
     } 
     System.out.println("\n"); 
    } 
} 

public int countInstence(int[][] array, int search) { 

    int count = 0; 

    for (int row = 0; row < array.length; row++) { 
     for (int col = 0; col < array[0].length; col++) { 
      if (array[row][col] == search) 
       count++; 

     } 
    } 
    return count; 
} 

public static void main(String[] args) { 

    Journal5b call = new Journal5b(); 
    Scanner in = new Scanner(System.in); 
    int[][] myArray; 
    int value; 
    myArray = call.createArray(10, 10); 

    call.print2dArray(myArray); 

    System.out.println("Enter a number to search for: "); 
    value = in.nextInt(); 

    System.out.println("Your number occurred " 
      + call.countInstence(myArray, value) + " Times"); 
} 

ответ

2

Просто вставьте оператор печати в одну строку внутри в if-statement и формат для печати строк и столбцов текущего индекса, как показано ниже ...

public int countInstance(int[][] array, int search) { 

    int count = 0; 

    for (int row = 0; row < array.length; row++) { 
     for (int col = 0; col < array[0].length; col++) { 
      if (array[row][col] == search) { 
       System.out.printf("Instance found at [%d, %d]\n", row, col); 
       count++; 
      } 
     } 
    } 

    return count; 
} 

Если вы не знакомы с System.out.printf вызова или %d символов, вы можете прочитать больше об этом here.

0

Просто добавьте эту строку в цикл

for (int row = 0; row < array.length; row++) { 
    for (int col = 0; col < array[0].length; col++) { 
     if (array[row][col] == search) { 
      System.out.printf("Instance found at [%d, %d]\n", row, col);// add this line 
      count++; 
     } 
    } 
} 
0

Если вы хотите использовать местоположение в другом месте, то просто объявить список и добавить местоположение в этот список во время поиска элемента.

public static List<String> location=new ArrayList<String>(); 
    public int countInstence(int[][] array, int search) { 

    int count = 0; 

    for (int row = 0; row < array.length; row++) { 
     for (int col = 0; col < array[0].length; col++) { 
      if (array[row][col] == search) 
      { 
       count++; 
       String loc=row+","+col; 
       location.add(loc); 
      } 
     } 
    } 
    return count; 
} 

public static void main(String[] args) { 

    Test call = new Test(); 
    Scanner in = new Scanner(System.in); 
    int[][] myArray; 
    int value; 
    myArray = call.createArray(10, 10); 

    call.print2dArray(myArray); 

    System.out.println("Enter a number to search for: "); 
    value = in.nextInt(); 

    System.out.println("Your number occurred " 
      + call.countInstence(myArray, value) + " Times"); 
    System.out.println("locations :"); 
    for(int i = 0; i < location.size(); i++) { 
     System.out.println(location.get(i)); 
    } 

} 
0

Я предлагаю использовать Очки:

List<Point> locations=new ArrayList<Point>(); 
     .... 
     if (array[row][col] == search) 
     { 
      count++; 
      locations.add(new Point(row,col)); 
     }