public static void main(String[] args) {
BufferedReader br = null;
try {
// reading csv file
br = new BufferedReader(new FileReader("/Users/andreeacondrut/Desktop/global_management.csv"));
// create list to hold products
List<Product2> product2List = new ArrayList<Product2>();
String line = "";
br.readLine();
while ((line = br.readLine()) != null) {
String[] productDetails = line.split(COMMA_DELIMITER);
if (productDetails.length > 0) {
// save the product2 information into product2 object
Product2 productList = new Product2(productDetails[0], Double.parseDouble(productDetails[1]),
productDetails[2], productDetails[3], Integer.parseInt(productDetails[4]));
product2List.add(productList);
}
Global_Inventory_Manager im = new Global_Inventory_Manager();
im.sortArray(productDetails);
}
// print product
for (Product2 e : product2List) {
System.out.println(e.getName() + "," + e.getPrice() + "," + e.getDescription() + "," + e.getImagePath()
+ "," + e.getQuantity());
}
} catch (Exception ee) {
ee.printStackTrace();
} finally {
try {
br.close();
} catch (IOException ie) {
System.out.println("ERROR occured while closing the BufferedReader.");
ie.printStackTrace();
}
}
void sortArray(String[] productDetails) {
int n = productDetails.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1; j++) {
if (productDetails[j] > productDetails[j + 1]) {
String temp = productDetails[j];
productDetails[j] = productDetails[j + 1];
productDetails[j + 1] = temp;
}
}
}
}
我正在尝试按数量和名称对产品数组进行递归排序。我远没有成功。不幸的是,我发现的任何示例我都不理解。这段代码给我一个错误,提示“未解决的编译问题: 未为参数类型java.lang.String,java.lang.String定义运算符>。对不起,如果我的代码格式错误,这是我第一次使用堆栈溢出,并且没有读取排序方法顶部。该如何解决?
答案 0 :(得分:1)
我建议您做一些改进/更改:
productDetails[j] > productDetails[j + 1]
更改为productDetails[j].compareTo(productDetails[j + 1]) > 0
。 Java中的String
是Comparable
。您已经为String对象定义了compareTo。有关其工作原理的详细信息,请查看here O(n^2)
。为什么不使用某种采用O(n*log(n))
的排序算法?更好的建议是使用时间复杂度为O(n*log(n))
的{{3}}。main
方法中。模块化您的代码。try-catch
中。更好的方法是在方法签名中添加一个throws
。尽管此答案对您还没有问过的许多其他问题进行了评论,但是我认为您的目的是学习和改进,在这方面我只是给您一点帮助:)