Java 如何为字符串变量编制索引?
如何索引aString变量。到目前为止,我一直在尝试使用:Java 如何为字符串变量编制索引?,java,Java,如何索引aString变量。到目前为止,我一直在尝试使用: ... private GeoPoint points[]; int counter = 0; ... counter ++; String[] RowData = line.split(","); longitude = RowData[0]; latitude = RowData[1]; Double lat = new Double(latitude); Double l
...
private GeoPoint points[];
int counter = 0;
...
counter ++;
String[] RowData = line.split(",");
longitude = RowData[0];
latitude = RowData[1];
Double lat = new Double(latitude);
Double lng = new Double(longitude);
points[counter] = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
...
for(int i=0; i < pointsCounter-1; i++) {
geopoint1 = points[i];
geopoint2 = points[i+1];
}
...
。。。
专用地质点[];
int计数器=0;
...
计数器++;
String[]RowData=line.split(“,”);
经度=行数据[0];
纬度=行数据[1];
双纬度=新的双纬度;
双倍lng=新的双倍(经度);
点[计数器]=新地质点((内部)(纬度*1E6),(内部)(液化天然气*1E6));
...
对于(int i=0;i
每次我测试上面的力都会关闭-有什么想法吗?
谢谢
对不起,我的问题不清楚-我实际上想做的是在地图叠加上画一条路径-我可以得到所有的地质点,这些点使我能够画一条非常漂亮的虚线,即从点“a”到b,然后从点“c”到点d等等,所以我试图找到一种方法来记录以前的地质点,这样我就可以使用它从点“b”到点“c”。我试图通过使用“counter”int来使用点索引
如果我不尝试为“点”编制索引,一切都会很好,但正如前面提到的,我会得到一条虚线
我希望这是有道理的——在过去的一天左右,我一直在兜圈子,如果我给人的印象是有点无礼的话,我很抱歉(尽管我可能是!)
下面是更详细的代码
try {
String line;
while ((line = reader.readLine()) != null) {
counter ++;
String[] RowData = line.split(",");
longitude = RowData[0];
latitude = RowData[1];
Double lat = new Double(latitude);
Double lng = new Double(longitude);
points[counter] = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
for(int i=0; i < pointsCounter-1; i++){
geopoint1 = points[i];
geopoint2 = points[i+1];
p1 = new Point();
p2 = new Point();
path = new Path();
Projection projection = mapv.getProjection();
projection.toPixels(geopoint1, p1);
projection.toPixels(geopoint2, p2);
path.moveTo(p2.x, p2.y);
path.lineTo(p1.x,p1.y);
canvas.drawPath(path, mPaint);
}
}
}
catch (IOException ex) {
// handle exception
}
试试看{
弦线;
而((line=reader.readLine())!=null){
计数器++;
String[]RowData=line.split(“,”);
经度=行数据[0];
纬度=行数据[1];
双纬度=新的双纬度;
双倍lng=新的双倍(经度);
点[计数器]=新地质点((内部)(纬度*1E6),(内部)(液化天然气*1E6));
对于(int i=0;i
非常感谢您的PointsCenter可能正在数到points.length,不是吗?这意味着循环中的点[i+1]正在访问一个不存在的数组索引-这是您的问题-正确地进行循环…如果您想要字符串的特定字符,请使用
字符
String x = "abcde"
x.charAt(0) // 'a'
x.charAt(4) // 'b'
注意charAt
返回字符,而不是字符串
如果我理解正确,则在for
循环的点
上会出现索引自动边界异常。这是因为当您到达最后一个元素时,索引i+1
不再有效,例如
for(int i=0; i < pointsCounter-1; i++){
//when i == pointsCounter-1, i+1 == pointsCounter, which is not a valid index
geopoint1 = points[i];
geopoint2 = points[i+1];
...
}
for(int i=0;i
只需执行一个简单的检查:
for(int i=0; i < pointsCounter-1; i++){
//when i == pointsCounter-1, i+1 == pointsCounter, which is not a valid index
geopoint1 = points[i];
if (i == pointsCounter-1) {
//there is no second point, so do something special
} else {
geopoint2 = points[i+1];
}
...
}
for(int i=0;i
您可以清除此逻辑,使其按您的要求运行。强制关闭在哪一行?异常是什么?首先:我应该将所有代码封装在try/catch语句中,并记录捕获的异常。也许这会有帮助:你说的“索引”是什么意思?您没有在代码上建立任何索引,而是在拆分字符串。另外,正确的java格式将使用camelCaseString[]rowData=…
。您将points[]数组初始化为什么大小?我在张贴的代码中没有看到任何迹象谢谢Peter-我的问题不是for循环,而是每次我尝试使用(点[计数器]=新的地质点((int)(lat*1E6),(int)(lng*1E6));它都会强制关闭。如果我使用(points=new GeoPoint((int)(lat*1E6),(int)(lng*1E6));),它会起作用,因此我似乎是在为变量“points”编制索引,这是导致问题的原因。