Java 调用另一个将txt文件读入在程序中排序的数组的类时遇到问题(带操作数错误)
因此,我有一个程序,它接收一个txt文件并读入,然后使用另一个java文件的类来设置数组。我尝试使用选择排序对放入数组中的值进行排序,但它为该行提供了错误的操作数类型:(if array[j]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])
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只是提醒一下,您应该通过单击“检查”图标来接受答案。