該分配要求用戶按斜槓數和字典順序對路徑名進行排序。具體的指令是「你的任務是如比較器接口沒有編譯且無法排序數組兩次
\home\me\cs1
\usr\share
\var\log
\usr\local\jdk1.6.0\jre\lib
FileName是路徑名來讀取,然後排序路徑長度,即路徑名斜槓的數量進行排序路徑名的數組列表。相同長度的路徑名應安排在字典順序(通過調用String.compareTo即。)例如,以上給出的路徑名稱將被排序爲「
\usr\share
\var\log
\home\me\cs1
\usr\local\jdk1.6.0\jre\lib
赫雷什我到目前爲止的代碼。我遇到了麻煩,因爲我不斷收到一個錯誤,指出它找不到cymbol「第38行的集合」和「第13行的預期接口」。我也不確定如何排序列表中的詞典編纂,而不會在按斜槓排序後搞亂順序。
import java.util.Arrays;
import java.util.ArrayList;
public class FileName implements Comparator<String>
{
public FileName()
{
}
private static int countSlashes(String p)
{
return p.length() - p.replace("/", "").length();
}
public int compareTo(String p1, String p2)
{
if (countSlashes(p1) < countSlashes(p2))
return -1;
if (countSlashes(p1) == countSlashes(p2))
return 0;
return 1;
}
public ArrayList sortArrays(ArrayList input)
{
return Collections.sort(input);
}
public interface Comparator<String>
{
int compare(String a, String b);
}
}
.....
Tester Class
/**
* @(#)FileNamePrgm.java
*
*
* @author
* @version 1.00 2015/4/2
*/
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Scanner;
public class FileNamePrgm
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("How many file names will you be entering?");
int x=in.nextInt();
ArrayList<String> arr=new ArrayList<String>();
System.out.println("Input file names");
String file;
for (int i=0; i<x; i++)
{
String fileN=in.nextLine();
arr.add(fileN);
}
ArrayList sorted=FileName.sortArrays(arr);
System.out.println("Sorted file names:");
System.out.println(sorted);
}
}
這是什麼'公共接口比較 { INT compare(String a,String b); }' –
2015-04-03 04:19:10
這裏有很多錯誤。你應該回頭查看你的課程資料(尤其是泛型和'Comparable' /'Comparator'),因爲很明顯你沒有完全理解這些概念。 – Radiodef 2015-04-03 05:02:46
@javaProgrammer,討論和答案提供了幫助你解決你的問題? – Yantraguru 2015-04-03 10:18:54