我试图做一个自定义排序方法的字符串数组,但我的代码是不能工作的某些原因。我写作的方法将投入这样
{"/",
"/games/",
"/homework/",
"/usr/",
"/games/snake/",
"/temp/downloads/",
"/usr/local/",
"/usr/local/bin/"}
我想排序如下:
- 通过目录的数量,即“/”将是第一位的,然后“/游戏/”等
- 如果它是一个领带,它应根据最后一个目录按字母顺序排序。
我的代码
import java.util.*;
public class Dirsort {
public String[] sort(String[] dirs) {
ArrayList<Sort> mySort = new ArrayList<Sort>();
for (String d: dirs){
String l = d.split("/")[-1];
int di = d.length();
mySort.add(new Sort(di,l,d));
}
Collections.sort(mySort);
String [] ans = new String [mySort.size()];
int count = 0;
for (Sort s: mySort){
ans[count] = s.toString();
count++;
}
return ans;
}
class Sort implements Comparable<Sort>{
private int d;
private String last;
private String dir;
public Sort(int myD, String myLast, String myDir){
d = myD;
last = myLast;
dir = myDir;
}
public String toString(){
return dir;
}
@Override
public int compareTo(Sort arg0) {
// TODO Auto-generated method stub
if (this.d == arg0.d){
return this.last.compareTo(arg0.last);
}
return this.d-arg0.d;
}
}
}
的问题
我收到以下错误,当我测试我的代码,我想不通为什么。
运行时异常:java.lang.ArrayIndexOutOfBoundsException: -1java.lang.ArrayIndexOutOfBoundsException:-1在Dirsort.sort(Dirsort.java:6)在测试$ 1.run(Tester.java:48)” /“,” “/ usr /”,“/ usr/local /”,“/ usr/local/bin /”,“/ games /”,“/ games/snake /”, “/ homework//温度/下载/”]
'String l = d.split(“/”)[ - 1];'数组的索引从'0'变为'length-1'。 –
使用'-1'作为索引不会在Java中工作......我敢打赌,你预计它会返回数组的最后一个元素,除非它不是;) – fge
Perl/Python程序员学习Java? –