Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用另一个将txt文件读入在程序中排序的数组的类时遇到问题(带操作数错误)_Java_Arrays_Class_Sorting_Operands - Fatal编程技术网

Java 调用另一个将txt文件读入在程序中排序的数组的类时遇到问题(带操作数错误)

Java 调用另一个将txt文件读入在程序中排序的数组的类时遇到问题(带操作数错误),java,arrays,class,sorting,operands,Java,Arrays,Class,Sorting,Operands,因此,我有一个程序,它接收一个txt文件并读入,然后使用另一个java文件的类来设置数组。我尝试使用选择排序对放入数组中的值进行排序,但它为该行提供了错误的操作数类型:(if array[j]that.totalCO2) 返回后; 其他的 提前返回; } } 你的比较应该是 if (array[j].compareTo(array[min]) < 0) { min = j; } if(数组[j].compareTo(数组[min])

因此,我有一个程序,它接收一个txt文件并读入,然后使用另一个java文件的类来设置数组。我尝试使用选择排序对放入数组中的值进行排序,但它为该行提供了错误的操作数类型:(if array[j] 类名为carboniodia.java的程序:

public class CarbonDioxideData {

    private String country;

    private double totalCO2;

    private double roadCO2;

    private double CO2PerPerson;

    private int carsPerPerson;

    public CarbonDioxideData() {
        country = "blank_country";
        totalCO2 = -1.0;
        roadCO2 = -1.0;
        CO2PerPerson = -1.0;
        carsPerPerson = -1; 
    }

    public String toString() {
        String result = country;

        result += " " + totalCO2;
        result += " " + roadCO2;
        result += " " + CO2PerPerson;
        result += " " + carsPerPerson;

        return result;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public double getTotalCO2() {
        return totalCO2;
    }

    public void setTotalCO2(double totalCO2) {
        this.totalCO2 = totalCO2;
    }

    public double getRoadCO2() {
        return roadCO2;
    }

    public void setRoadCO2(double roadCO2) {
        this.roadCO2 = roadCO2;
    }

    public double getCO2PerPerson() {
        return CO2PerPerson;
    }

    public void setCO2PerPerson(double cO2PerPerson) {
        CO2PerPerson = cO2PerPerson;
    }

    public int getCarsPerPerson() {
        return carsPerPerson;
    }

    public void setCarsPerPerson(int carsPerPerson) {
        this.carsPerPerson = carsPerPerson;
    }
}
我正在编写的程序调用上面两个,CarbonAnalysis.java:

import java.io.*;
import java.util.*;

public class CarbonAnalysis {
    public static void main(String[]args){
        //CarbonDioxideData c1 = new CarbonDioxideData();
        //c1.setCountry("canada");
        //System.out.println(c1);
        Scanner userInput = new Scanner(System.in);
        String fileName ="";
        File inputFile = null;
        Scanner fileReader = null;
        while(fileReader==null){
        try{
        System.out.println("Enter input file name:");
        fileName= userInput.next();
        inputFile = new File(fileName);
        fileReader = new Scanner(inputFile);
        System.out.println("Successfully opening " + fileName);
        }catch(IOException err){
            System.out.println("Something went wrong");
            System.out.println(err);
            System.out.println("Please retry");
        }
        }

        String testLine = fileReader.nextLine();
        System.out.println(testLine);

        int numberOfEntries = fileReader.nextInt();
        System.out.println(numberOfEntries);

        CarbonDioxideData[] array = new CarbonDioxideData[numberOfEntries];
        for(int i =0;i<numberOfEntries;i++){


        CarbonDioxideData c1 = new CarbonDioxideData();
        String country = fileReader.next();
        c1.setCountry(country);
        double totalCO2 = fileReader.nextDouble();
        c1.setTotalCO2(totalCO2);
        double roadCO2 = fileReader.nextDouble();
        c1.setRoadCO2(roadCO2);
        double perPerson = fileReader.nextDouble();
        c1.setCO2PerPerson(perPerson);
        int cars = fileReader.nextInt();
        c1.setCarsPerPerson(cars);
        //System.out.println(c1);
        array[i]=c1;
    }
    printArray(array);
    emissionStats(array);
    }

    public static void printArray(CarbonDioxideData[] a){
        for(int i=0; i<a.length;i++){
            System.out.println(a[i]);
        }
    }

    public static void emissionStats(CarbonDioxideData[] array){
        for (int i = 0; i < array.length - 1; i++) { 
 // find index of smallest remaining value 
            int min = i; 
            for (int j = i + 1; j < array.length; j++) { 


                if (array[j] < array[min]) { 
                min = j; 
                } 
            } 

 // swap smallest value its proper place, a[i] 
            swap(array, i, min); 
        } 

    }

    public static void swap(CarbonDioxideData[] a, int i, int j) { 
        if (i != j) { 
            CarbonDioxideData temp = a[i]; 
            a[i] = a[j]; 
            a[j] = temp; 
        } 
    }    
}
import java.io.*;
导入java.util.*;
公共级碳分析{
公共静态void main(字符串[]args){
//二氧化碳数据c1=新的二氧化碳数据();
//c1.国家(“加拿大”);
//系统输出打印LN(c1);
扫描仪用户输入=新扫描仪(System.in);
字符串fileName=“”;
文件inputFile=null;
Scanner fileReader=null;
while(fileReader==null){
试一试{
System.out.println(“输入文件名:”);
fileName=userInput.next();
inputFile=新文件(文件名);
fileReader=新扫描仪(inputFile);
System.out.println(“成功打开”+文件名);
}捕获(IOException err){
System.out.println(“出错”);
系统输出打印项次(错误);
System.out.println(“请重试”);
}
}
字符串testLine=fileReader.nextLine();
System.out.println(测试线);
int numberOfEntries=fileReader.nextInt();
系统输出打印项次(numberOfEntries);
CarbonDioxideData[]数组=新的CarbonDioxideData[numberOfEntries];
对于(int i=0;i
二进制运算符可以与基元类型一起使用

public class CarbonDioxideData implements Comparable<CarbonDioxideData> {

   private String country;

   private double totalCO2;

   private double roadCO2;

   private double CO2PerPerson;

   private int carsPerPerson;


   @Override
   public int compareTo(CarbonDioxideData that) {
    final int BEFORE = -1;
    final int EQUAL = 0;
    final int AFTER = 1;


    if (this == that) return EQUAL;

        //Compare function according to your logic
    if (this.totalCO2 == that.totalCO2) return EQUAL;
    if (this.totalCO2 > that.totalCO2) 
            return AFTER;
    else 
            return BEFORE;
  }

}
公共类二氧化碳数据实现可比性{
私人国家;
私人双总二氧化碳;
私人双行公路;
私人双职工;
私家车;
@凌驾
公共内部比较(二氧化碳数据){
之前的最终整数=-1;
最终整数等于0;
之后的最终整数=1;
如果(这个==那个)返回相等的值;
//根据您的逻辑比较函数
如果(this.totalCO2==that.totalCO2)返回相等值;
如果(this.totalCO2>that.totalCO2)
返回后;
其他的
提前返回;
}
}
你的比较应该是

if (array[j].compareTo(array[min]) < 0) { 
    min = j; 
} 
if(数组[j].compareTo(数组[min])<0{
min=j;
} 

谢谢您的帮助!现在效果很好。@user3497212只是提醒一下,您应该通过单击“检查”图标来接受答案。