2017-01-23 3 views
-1

verwendet ich versuche, ein Programm zu erstellen, das den optimalen Standort gibt ein Krankenhaus, unter Verwendung der Formel d = ((x zu platzieren - x) + (y - y)) 0,5. Die optimalen Standorte befinden sich in den grünen Kreisen mit den folgenden Koordinaten (11,8), (9,9), (9,19) und (13,13).ein Array als Karte JAVA

image of maps

Hier ist der Code, den ich bisher habe:

public class hospitalBuilderProgram 
{ 
    public static void main(String[] args) 
    { 
     byte[][][] maps = { 
      {{2, 2}, {2, 8}, {5, 15}, {19, 1}, {17, 17}}, 
      {{1, 1}, {7, 19}, {13, 19}, {19, 7}, {19, 13}}, 
      {{0, 19}, {2, 19}, {4, 19}, {6, 19}, {18, 19}}, 
      {{7, 19}, {13, 19}, {19, 19}, {19, 13}, {19, 7}} 
     }; 

     for (int row = 1; row <= 19; row++) { 
      for (int col = 1; col <= 19; col++) { 
       int d1 = (((x1 - row)^2 + (y1 - col)^2)); 
       int d2 = ((x2 - row)^2 + (y2 - col)^2); 
       int d3 = ((x3 - row)^2 + (y3 - col)^2); 
       int d4 = ((x4 - row)^2 + (y4 - col)^2); 
       int d5 = ((x5 - row)^2 + (y5 - col)^2); 

       if (d1 == d2 == d3 == d4 == d5) 
        return (row, col); 
      } 
     } 
    } 
} 

ich meinen Code versuche entsprechend zu beheben, aber ich bin nicht sicher, wie es weitergeht.

+1

Ich denke, Sie wollen 'maps [row] [col] [0]' und 'maps [row] [col] [1]' statt den Index des Arrays ab '(x1-row)^2 zu bearbeiten + (y1-col) '. Außerdem gibt es keine Variablen 'x1' oder' y1', die irgendwo definiert sind. – SomeJavaGuy

+2

Warum beginnt Ihre Zeile und Spalte mit '1' anstelle von' 0'? Wo sind Ihre 'x1..x5' und' y1..y5' –

+1

Wo sind x .. und y ... definiert? – Jens

Antwort

0

Diese Lösung den Schwerpunkt des anderen Ort erarbeiten:

public static void locateHospital() { 
    final byte[][][] maps = { 
     {{2, 2}, { 2, 8}, { 5, 15}, {19, 1}, {17, 17}}, 
     {{1, 1}, { 7, 19}, {13, 19}, {19, 7}, {19, 13}}, 
     {{0, 19}, { 2, 19}, { 4, 19}, { 6, 19}, {18, 19}}, 
     {{7, 19}, {13, 19}, {19, 19}, {19, 13}, {19, 7}} 
    }; 
    for(final byte[][] map : maps) { 
     int x = 0; 
     int y = 0; 
     for(final byte[] coords : map) { 
     x += coords[0]; 
     y += coords[1]; 
     } 
     x /= 5; 
     y /= 5; 
     System.out.printf("Hospital should be placed in {%d, %d}\n", x, y); 
    } 
} 

Der Ausgang:

Hospital should be placed in {9, 8} 
Hospital should be placed in {11, 11} 
Hospital should be placed in {6, 19} 
Hospital should be placed in {15, 15} 

Es ist nicht Ihr Problem noch Ihre Lösung, aber es kann helfen ... ;-)

Um genauer zu sein, sollte jeder durch die Daten beschriebene Ort seine Bevölkerung dazu bringen, das Baryzentrum zu gewichten.