我有一个包含颜色列表的文件。他们的十六进制值(海军#000080)。我能够将文件内容读入arrayList,但是,我试图根据十六进制值对此列表进行排序。因此我创建了另外两个类,一个包含用于比较十六进制值的方法,另一个包含一个名为Color的类,它表示我在列表中存储的信息类型。我的问题是,当我尝试将文件内容添加到List时,如下所示: -
colorNames.add(inputFileName.nextLine());
我收到错误消息“类型List中的方法add(Color)不适用于参数(String)”
这是因为我按如下方式创建了我的列表: -
List<Color> colorNames = new ArrayList<Color>();
我理解错误意味着什么,但我不知道如何解决它,或者我采取的方法是否合适!任何建议,将不胜感激。以下是我的来源。
//import statements
public class ReadStoreShow {
public static void main(String[] args) {
System.out.println("Please input a filename: ");
Scanner inputFile = new Scanner(System.in);
String fileName = inputFile.nextLine();
File colors = new File(fileName.toString());
//Receive number N from user
System.out.println("Please input a number N: ");
Scanner inputNumber = new Scanner(System.in);
int number = inputNumber.nextInt();
List<Color> colorNames = new ArrayList<Color>();
try {
Scanner inputFileName = new Scanner(colors);
while (inputFileName.hasNext()) {
colorNames.add(inputFileName.nextLine());
}
List<Color> subListOfColors = colorNames.subList(0, number);
Collections.sort(subListOfColors, new ColorComp());
for (int i = 0; i<subListOfColors.size(); i++)
System.out.println(subListOfColors.get(i));
inputFileName.close();
}
catch (FileNotFoundException e) {
System.out.println("File not found");
System.out.println("Please ensure that file name is <<name>>.txt");
}
}
}
class ColorComp implements Comparator<Color>{
@Override
public int compare(Color c1, Color c2){
String string1 = c1.toString();
String string2 = c2.toString();
int compareResult = string1.compareTo(string2);
if(compareResult < 0) {return 1;}
else {return -1;}
}
}
class Color {
private String colorName;
private String colorHex;
public Color(String n, String h) {
this.colorName = n;
this.colorHex = h;
}
public String getColorHex() {return colorHex;}
public String getColorName() {return colorName;}
public String toString() {return "Color Name: " + this.colorName + "Color Hex: " + this.colorHex;}
}
答案 0 :(得分:1)
我认为首先你从文件读取数据并存储到Color类对象中,之后你将该对象添加到数组中。