我的程式是用 Java 實作一個獨立的產品搜索程式,它為正在尋找 T 恤的用戶列出匹配的產品。我得到了 3 個 CSV 檔案。我正在嘗試將 CSV 檔案的物件保存到 aLinkedList中以搜索 T 恤,但我無法推斷. LinkedList這是我試圖將 CSV 檔案的物件存盤到LinkedList.
package com.example.Mavenassignmentone;
import java.io.*;
import java.util.*;
public class FindTshirt {
List<ShirtModel> shirtlist = new LinkedList<ShirtModel>();
LinkedList<String> list;
showTshirt sh = new showTshirt();
public void find(String filename, String COLOUR, String GENDER_RECOMMENDATION, String SIZE)
throws FileNotFoundException {
Scanner sc = new Scanner(new File(filename));
while (sc.hasNext()) {
String sentence = sc.nextLine().toString();
if (!sentence.isEmpty()) {
StringTokenizer token = new StringTokenizer(sentence, "|");
list = new LinkedList<>(sentence.length());
while (token.hasMoreTokens()) {
list.add(token.nextToken());
}
if (list.get(1).equals(COLOUR) && list.get(2).equals(GENDER_RECOMMENDATION)
&& list.get(3).equals(SIZE)) {
ShirtModel model = new ShirtModel(list.get(0), list.get(1), list.get(2),
list.get(3), list.get(4), Integer.parseInt(list.get(5)),
Float.parseFloat(list.get(6)), list.get(7));
shirtlist.add(model);
}
}
}
}
public void updateView(int choiceCode) {
if (choiceCode == 1) {
Collections.sort(shirtlist, new Comparator<ShirtModel>() {
@Override
public int compare(ShirtModel o1, ShirtModel o2) {
return o1.getPrice() - o2.getPrice();
}
});
}
else if (choiceCode == 2) {
Collections.sort(shirtlist, new Comparator<ShirtModel>() {
public int compare(ShirtModel o1, ShirtModel o2) {
return (int) (o1.getRating() - o2.getRating());
}
});
}
else {
System.out.println("Wrong Choice.");
return;
}
sh.viewtshirt(shirtlist);
}
}
這行代碼給出錯誤:
list=new LinkedList<>(sentence.length());
錯誤是
無法推斷型別引數
uj5u.com熱心網友回復:
您的問題出在這行代碼中。
list = new LinkedList<>(sentence.length());
沒有帶引數的類LinkedList的建構式。
該行應該是:int
list = new LinkedList<>();
為了完整起見,這是您的更正代碼。有一個變化,它用注釋標記CHANGE HERE。
package com.example.Mavenassignmentone;
import java.io.*;
import java.util.*;
public class FindTshirt {
List<ShirtModel> shirtlist = new LinkedList<ShirtModel>();
LinkedList<String> list;
showTshirt sh = new showTshirt();
public void find(String filename, String COLOUR, String GENDER_RECOMMENDATION, String SIZE)
throws FileNotFoundException {
Scanner sc = new Scanner(new File(filename));
while (sc.hasNext()) {
String sentence = sc.nextLine().toString();
if (!sentence.isEmpty()) {
StringTokenizer token = new StringTokenizer(sentence, "|");
list = new LinkedList<>(); // CHANGE HERE
while (token.hasMoreTokens()) {
list.add(token.nextToken());
}
if (list.get(1).equals(COLOUR) && list.get(2).equals(GENDER_RECOMMENDATION)
&& list.get(3).equals(SIZE)) {
ShirtModel model = new ShirtModel(list.get(0), list.get(1), list.get(2),
list.get(3), list.get(4), Integer.parseInt(list.get(5)),
Float.parseFloat(list.get(6)), list.get(7));
shirtlist.add(model);
}
}
}
}
public void updateView(int choiceCode) {
if (choiceCode == 1) {
Collections.sort(shirtlist, new Comparator<ShirtModel>() {
@Override
public int compare(ShirtModel o1, ShirtModel o2) {
return o1.getPrice() - o2.getPrice();
}
});
}
else if (choiceCode == 2) {
Collections.sort(shirtlist, new Comparator<ShirtModel>() {
public int compare(ShirtModel o1, ShirtModel o2) {
return (int) (o1.getRating() - o2.getRating());
}
});
}
else {
System.out.println("Wrong Choice.");
return;
}
sh.viewtshirt(shirtlist);
}
}
請注意,這解決了您遇到的編譯器錯誤,但是我沒有檢查代碼是否正確執行,因為您沒有發布可重現的示例,因為您的代碼缺少類ShirtModel和showTshirt.
uj5u.com熱心網友回復:
被list宣告為LinkedListvia String,LinkedList<String>list;但list被初始化為一個新的鏈表,其中 anint作為建構式引數,但您使用的LinkedList建構式接受一個集合作為其建構式,而不是一個int.
這就是編譯器無法推斷型別引數的原因。來自Java 型別推斷檔案:
推理演算法確定引數的型別,以及分配或回傳結果的型別(如果可用)。最后,推理演算法試圖找到適用于所有引數的最具體的型別。
最簡單的解決方法是list使用空LinkedList建構式初始化:
list = new LinkedList<>();
uj5u.com熱心網友回復:
您必須識別鏈表的型別,將行更改為
list=new LinkedList<String>();
而且,您在linkedList中,您不必確定長度。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/425986.html
