私のコードでは、航空会社の遅延便数/総便数を計算する必要があります。私はコードを書きましたが、最終的な比率の出力を除いてすべてが機能します。誰かが問題を見ますか?
import au.com.bytecode.opencsv.CSVReader;
// javac -classpath .;opencsv-2.3.jar flightinfo.java
import java.util.*;
import java.io.*;
import java.lang.*;
public class flightinfo2{
public static void main (String [] args) throws Exception{
CSVReader reader = new CSVReader(new FileReader("delayed.csv"));
String [] nextLine;
Map<String, Carrier> airlines = new HashMap<String, Carrier>();
while ((nextLine = reader.readNext()) != null) {
// At this point, nextLine is the name of the carrier, e.g., "Continental"
// nextLine can be used as the key in your "airlines" map. E.g., airlines.put(nextLine, new Carrier());
if (airlines.containsKey(nextLine[1])){
airlines.get(nextLine[1]).addNumFlights(Integer.valueOf(nextLine[6]));
airlines.get(nextLine[1]).addNumDelayed(Integer.valueOf(nextLine[7]));
airlines.get(nextLine[1]).setDelayedRatio();
}
else {
airlines.put(nextLine[1], new Carrier());
airlines.get(nextLine[1]).setName(nextLine[1]);
airlines.get(nextLine[1]).setNumFlights(Integer.valueOf(nextLine[6]));
airlines.get(nextLine[1]).setNumDelayed(Integer.valueOf(nextLine[7]));
}
}
airlines.get("Continental").print();
airlines.get("Atlantic Southeast").print();
airlines.get("American Eagle").print();
airlines.get("Delta").print();
airlines.get("ExpressJet").print();
airlines.get("United").print();
airlines.get("SkyWest").print();
airlines.get("US Airways").print();
airlines.get("JetBlue").print();
airlines.get("American").print();
airlines.get("Mesa").print();
airlines.get("Frontier").print();
airlines.get("AirTran").print();
airlines.get("Southwest").print();
}
}
クラス
public class Carrier{
String name;
int totalFlights;
int delayedFlights;
int totalDelayedRatio;
public Carrier(){}
public void setName(String s){
name = s;
}
public void setNumDelayed(int n){
delayedFlights = n;
}
public void setNumFlights(int s){
totalFlights = s;
}
public void addNumDelayed(int n){
delayedFlights = delayedFlights + n;
}
public void addNumFlights(int s){
totalFlights = delayedFlights + s;
}
public void setDelayedRatio(){
totalDelayedRatio = (delayedFlights/totalFlights);
}
public void print(){
System.out.printf("%s:\t%d,\t%d,\t%d\n", name, totalFlights, delayedFlights, totalDelayedRatio);
}
}
プリントアウトは次のようになります: Continental: 92, 81, 0 <---比率である必要があります ...more キャリア