通过接收2d坐标数组创建一个对象
您好,我的问题是以下内容,即时接收一个2d矩阵,我已经创建了一个名为City的类,它将保存x和y的位置坐标值将以逗号分隔这样通过接收2d坐标数组创建一个对象
0,0
0,20
4,3
6,2
7,21
for (int k = 0; k < size; k++){
String valuesStrArr2[] = s.nextLine().split(",");
for (int l = 0; l < 2; l++){
int coord = Integer.parseInt(valuesStrArr2[l]);
System.out.println("cordinatesss:" + coord);
City city = new City(coord,coord);
TourManager.addCity(city);
}
}
所以“坐标”是数组的值,当我打印出来,有正确的价值观,但是当我创建城市它重复的值,我怎么能解决这个问题?我知道这是一个愚蠢的问题,但我被困在这里。
我的构造
// Constructs a city at chosen x, y location
public City(int x, int y){
this.x = x;
this.y = y;
}
@Glen打在它的指甲上。在你的第二个为循环您填写第一(2)迭代坐标整型变量,然后提供该值都X和ÿ的市在同样的迭代。你在第二次迭代中做同样的事情。实际上,你提供的城市数量是你应该这样做的两倍。
由于你的二维阵列有这么几列,你真的不需要内部为循环。你可以用一个循环完成整个事情,它很可能会更具可读性:
for (int k = 0; k < size; k++) {
String valuesStrArr2[] = s.nextLine().split(",");
int coord1 = Integer.parseInt(valuesStrArr2[0]);
int coord2 = Integer.parseInt(valuesStrArr2[1]);
City city = new City(coord1, coord2);
TourManager.addCity(city);
}
哎呀......格伦也打败了我:) – DevilsHnd
你似乎是的印象是coord
将有时间在同一地点两个不同的值,当你调用new City(coord,coord)
下。该变量在该点处只有一个值,将为Integer.parseInt(valuesStrArr2[l])
这会导致您有重复的城市,其中一个具有正确的x坐标,另一个具有正确的y坐标。
要解决这个问题,尝试这样的事情: 注:此代码不会为你工作,因为我还没有占到坐标上述9个值(此代码只如果所有值均为1个值作品)显示你这个意在帮助你自己找到答案
String coordinates = "0, 0, 0, 20, 4, 3, 6, 2, 7, 21";
for (int k = 0; k < size; k += 2){ //This is to get every other value from the coordinates
int x = Integer.parseInt(coordinates.charAt(k));
int y = Integer.parseInt(coordinates.charAt(k+1));
System.out.println("cordinatesss:" + x + ", " + y);
City city = new City(x, y);
TourManager.addCity(city);
}
为什么你的City构造函数接受两个相同的参数?这真的没有意义:新城市(坐标,坐标) –
10不一样,一个是x和y的一个 //在选定的x,y位置构建一个城市 public City(int x,int y) {this.width =“_8;'; this.y = y; } –