Djc*_*123 3 java user-input hashmap coordinates
我想知道如何使用坐标找到关闭点.我正在使用一个包含坐标和字符串的Hashmap.我允许用户输入x和y轴并将它们存储为int a和int b但我不知道从那里去哪里.谢谢你的期待
import java.util.HashMap;
import java.util.Scanner;
public class Coordinate {
static class Coords {
int x;
int y;
public boolean equals(Object o) {
Coords c = (Coords) o;
return c.x == x && c.y == y;
}
public Coords(int x, int y) {
super();
this.x = x;
this.y = y;
}
public int hashCode() {
return new Integer(x + "0" + y);
}
public String toString()
{
return x + ";" + y;
}
}
public static void main(String args[]) {
HashMap<Coords, String> map = new HashMap<Coords, String>();
map.put(new Coords(250, 140), "Clifton street");
map.put(new Coords(195, 115), "twoli");
map.put(new Coords(165, 95), "Jacobs well");
map.put(new Coords(140, 90), "moxbridge");
map.put(new Coords(55, 95), "parkway");
map.put(new Coords(15, 120), "easton");
map.put(new Coords(260, 25), "Weston on shore");
map.put(new Coords(250, 60), "newbridge");
map.put(new Coords(185, 85), "central");
map.put(new Coords(140, 100), "stdennis");
map.put(new Coords(85, 140), "trim bridge");
map.put(new Coords(170, 35), "windmill hill");
map.put(new Coords(150, 60), "shakespeare court");
map.put(new Coords(95, 50), "temple fields");
map.put(new Coords(55, 125), "pirac cresent");
map.put(new Coords(150, 155), "st judes hill");
Scanner input = new Scanner(System.in);
int i;
int a;
int b;
System.out.println(map.size());
System.out.println(map.toString());
Coords c = new Coords(65,72);
System.out.println(c + " - " + map.get(c));
System.out.println("choose from the following");
System.out.println("find closest station = 1");
System.out.println("plan train route = 2");
i = input.nextInt();
if (i==1){
System.out.println("enter your x axis ");
a = input.nextInt();
System.out.println("enter your y axis");
b = input.nextInt();
System.out.println("the nearest station is");
}
else if (i==2){
System.out.println("route planner");
}
else {
System.out.println("entered incorrect number");
}
}
}
Run Code Online (Sandbox Code Playgroud)
首先,我建议你接受KevinMangold的建议,因为Java提供了一个非常合适的Point类供你使用.
这是一个最小化问题.基本上,您希望使用某个度量(也许是欧几里德距离?)计算输入点与每个已知站点之间的距离.然后,您选择与找到的最小距离对应的电台.
这是使用Collections.min的一些示例代码:
final Map<Point, String> names = ...;
final Set<Point> stations = names.keySet();
final Point source = ...;
final Point nearest = Collections.min(stations, new Comparator<Point>() {
public int compare(final Point p1, final Point p2) {
return (int) p1.distanceSq(p2);
}
});
final String name = names.get(nearest);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9002 次 |
| 最近记录: |