Что именно я должен возвращать в этом коде?

#java #arrays #return

#java #массивы #Возврат

Вопрос:

Мы создаем программу, которая вернет топографическую карту и покажет пользователю наилучший способ ориентироваться на местности, не совершая крутых подъемов или спусков. Для файлов, с которыми я работаю, я не уверен, какие максимальные и минимальные значения нужно возвращать. Назначение в основном завершено, за исключением 3 ошибок, касающихся ожидаемого возвращаемого значения. Я отправил основной код, с которым мы работаем, и включил ссылку на другие файлы, которые профессор дал нам для задания.

Я пробовал return MaxValue, return MinValue, return max, return min и несколько других комбинаций, но проблема в том, что я не уверен, должен ли я возвращать значение из этого MapDataDrawer.java файл или из одного из двух других файлов, которые мы должны использовать для задания от профессора.

 //MapDataDrawer.java
//This is the code that is returning the error
import java.util.*;
import java.io.*;
import java.awt.*;

public class MapDataDrawer
{

  private int[][] grid;

  public MapDataDrawer(String filename, int rows, int cols){
      // initialize grid 
      grid = new int[rows][cols];

      //read the data from the file into the grid
      File dataFile = new File(filename);
      try {
         Scanner dataInput = new Scanner(dataFile);
         for (int i=0; i<rows; i  ) {
            for (int j=0; j<cols;j  ) {
               grid[i][j] = dataInput.nextInt();

            }
         }

      } catch (Exception e) { e.printStackTrace();}

  }

  /**
   * @return the min value in the entire grid
   */
  public int findMin() {
     // Implement this method
  }
  /**
   * @return the max value in the entire grid
   */
  public int findMax(){
     // Implement this method
  }

  /**
   * @param col the column of the grid to check
   * @return the index of the row with the lowest value in the given col for the grid
   */
  public  int indexOfMinRow(int col){
     //Implement this method

  }

  /**
   * Draws the grid using the given Graphics object.
   * Colors should be grayscale values 0-255, scaled based on min/max values in grid
   */
  public void drawMap(Graphics g){
      int min = findMin();
      int max = findMax();

      for (int i=0; i<480; i  ) {
         for (int j=0; j<480; j  ) {
            int c = (255 * (grid[i][j] - min)) / (max - min);
            g.setColor(new Color(c, c, c));
            g.fillRect(j, i, 1, 1);
         }
      }
   }

   /**
   * Find a path from West-to-East starting at given row.
   * Choose a foward step out of 3 possible forward locations, using greedy method described in assignment.
   * @return the total change in elevation traveled from West-to-East
   */
  public int drawLowestElevPath(Graphics g, int row){
    int elevChange = 0;
      // Implement this method
      return elevChange;

  }

   private int minOfThree(int a, int b, int c) {
      if ((a > b) amp;amp; (a > c)) return a;
      if ((b > a) amp;amp; (b > c)) return b;
      if ((c > a) amp;amp; (c > b)) return c;
      return 0;
   }

}
  

Это файлы, отправленные профессорами, в отношении которых я не уверен, должен ли я возвращать какое-то значение из одного из этих файлов или из фактического файла домашнего задания (MapDataDrawer.java) https://drive.google.com/drive/folders/1siRoY1K0ngptE2rL-wscXLK8Ct7Qo1hb?usp=sharing

Он также включает топографические данные, которые мы должны использовать.

Комментарии:

1. Пожалуйста, опишите, что вы уже пробовали, и попробуйте задать конкретный вопрос. В настоящее время вы просите сообщество определить и решить вашу домашнюю работу.

2. Похоже, вам нужно, по крайней мере, реализовать методы findMin , findMax и indexOfMinRow , которые не должны быть слишком сложными.

3. Я не вижу ничего, выделенного жирным шрифтом. Было бы более полезно, если бы вы сообщили нам фактические сообщения об ошибках и строки, с которыми они связаны. Но я предполагаю, что у вас есть ошибки компиляции, потому что методы findMin(), findMax() и indexOfMinRow() имеют возвращаемый тип (int), но на самом деле не возвращают значение.

4. Теперь, я полагаю, вы действительно спрашиваете нас, что вы должны вернуть в этих полях? Единственный ответ, который мы действительно можем дать, это «соответствующее значение». Нам не обязательно знать математику или логику, стоящую за этим, чтобы знать, каков правильный ответ. Похоже, это скорее вопрос о логике вашего алгоритма, чем техническая проблема с кодом. Если вы не уверены, какова цель домашнего задания, спросите своего профессора.

5. Это ошибка, которую я получаю: MapDataDrawer.java: 34: ошибка: отсутствует оператор возврата } ^ MapDataDrawer.java: 40: ошибка: отсутствует оператор возврата } ^ MapDataDrawer.java: 49: ошибка: отсутствует оператор возврата } ^ 3 ошибки —-jGRASP wedge2: код выхода для процесса равен 1. —-jGRASP: операция завершена.

Ответ №1:

Как вы заполнили grid :

 public int findMin() {
    int min = Integer.MAX_VALUE;
    for (int i = 0; i < grid.length; i  ) {
        for (int j = 0; j < grid[i].length; j  ) {
           int value = grid[i][j];
           if (value < min) {
               min = value;
           }
        }
     }
     return min;
 }
  

Комментарии:

1. Это было очень полезно! Мне не хватало кода, который фактически сообщал программе, ЧТО возвращать с помощью оператора if. Я думаю, что могу сделать остальное на основе этого примера.