gpt4 book ai didi

java - 使用 Double 列表对相应的 String 列表进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:56 25 4
gpt4 key购买 nike

我正在创建一个概率结果模拟器,其中的信息是从 .csv 文件输入的。该文件包含两支球队、他们的失利、获胜、排名和之前的比赛结果。最后,他们的“信心”等级被放入一个 ArrayList 中,两支球队都被放入另一个 ArrayList 中(取决于谁获胜,该团队将首先被放入 ArrayList 中)。所以每个对应的两个团队都有一个置信度分数。到目前为止,这是我的代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.stage.FileChooser;
import javafx.geometry.*;
import java.util.*;
import java.io.*;

public class POS extends Application
{
private ArrayList<Double> confidenceList = new ArrayList<>();
private ArrayList<String> cityList = new ArrayList<>();
private BorderPane pane = new BorderPane();
private Button runBtn = new Button("Run");
@Override
public void start(Stage stage)
{


VBox vBox = new VBox(20);
vBox.setPadding(new Insets(15));
Button selectBtn = new Button("Select File");
selectBtn.setStyle("-fx-font: 22 arial; -fx-base: #b6e7c9;");
vBox.getChildren().add(selectBtn);

selectBtn.setOnAction(e->
{
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Open Resource File");
FileChooser.ExtensionFilter extFilter =
new FileChooser.ExtensionFilter("TEXT files (*.csv)", "*.CSV", ".xlsv", ".XLSV");
fileChooser.getExtensionFilters().add(extFilter);
File file = fileChooser.showOpenDialog(stage);

run(file);


});

RadioButton weekBtn = new RadioButton("Current Week");
RadioButton seasonBtn = new RadioButton("Entire Season");

runBtn.setStyle("-fx-font: 22 arial; -fx-base: #b6e7c9;");


weekBtn.setSelected(true);
seasonBtn.setDisable(true);
vBox.getChildren().add(weekBtn);
vBox.getChildren().add(seasonBtn);
vBox.getChildren().add(runBtn);

pane.setLeft(vBox);
Scene scene = new Scene(pane, 500, 200);
stage.setScene(scene);
stage.setTitle("POS");
stage.show();
}
public void run(File file)
{
runBtn.setOnAction(e->
{
try
{
Scanner input = new Scanner(file);
input.nextLine();
sortFile(file, input);

input.close();
}

catch (InputMismatchException ex)
{
System.out.println("Error you seem to have typed the wrong type of file");
}
catch(IOException ex)
{
System.out.println("Error, file could not be found");
}


});
}
public void sortFile(File file, Scanner input)
{
if (!input.hasNext())
{
sortArrays(confidenceList, cityList);
}
else
{
String strList = Arrays.toString(input.nextLine().split("\t"));
String[] arrList = strList.split(",");

int homeRank = Integer.parseInt(arrList[1]);

int roadRank = Integer.parseInt(arrList[6]);
Random r = new Random();

int lowestTeamRank = Math.abs(homeRank - roadRank);

double numForHomeTeam = 0;
double numForRoadTeam = 0;
if (homeRank < roadRank)
{
numForHomeTeam = ((r.nextInt(lowestTeamRank) - r.nextInt(2)) + (getLastGameOutcome(arrList[4])* r.nextInt(3))) - getWinPct(arrList[2], arrList[3]);

numForRoadTeam = ((r.nextInt(roadRank) + r.nextInt(2)) + (getLastGameOutcome(arrList[9])* r.nextInt(3))) - getWinPct(arrList[7], arrList[8]);
}

else if (homeRank > roadRank)
{
numForHomeTeam = ((r.nextInt(homeRank) - r.nextInt(2)) + (getLastGameOutcome(arrList[4])* r.nextInt(3))) - getWinPct(arrList[2], arrList[3]);

numForRoadTeam = r.nextInt(lowestTeamRank) - r.nextInt(2) + getLastGameOutcome(arrList[9])* r.nextInt(3) - getWinPct(arrList[7], arrList[8]);
}



double confidenceRate = Math.round(Math.abs(numForHomeTeam - numForRoadTeam));
confidenceList.add(confidenceRate);
if (numForHomeTeam < numForRoadTeam)
{
cityList.add(arrList[0]);
cityList.add(arrList[5]);
}
else if (numForHomeTeam > numForRoadTeam)
{
cityList.add(arrList[5]);
cityList.add(arrList[0]);
}
else
{
cityList.add(arrList[0]);
cityList.add(arrList[5]);
}

sortFile(file, input);
}
}

public int getLastGameOutcome(String lastGame)
{
if (lastGame.charAt(0) == 'W')
{
return (int)(Math.random() * 3);
}

else
{
return (int)(Math.random() * -3);
}
}

public double getWinPct(String wins, String losses)
{
double newWins = Double.parseDouble(wins);
double newLosses = Double.parseDouble(losses);
return newWins / (newWins + newLosses);
}

public void sortArrays(ArrayList<Double> doubleArray, ArrayList<String> stringArray)
{


}

}

我希望它准确地像这样的示例:

ArrayList with confidence ranks: 2, 50, 20, 30, etc.
ArrayList with teams: Chicago, Detroit, Atlanta, NY, etc.

芝加哥和底特律对应2,亚特兰大和纽约对应50,排序后应该是这样的:

50, 30, 20, 2
Atlanta, NY......

我该如何实现?

最佳答案

推荐的方法是按照 @Kevin Esche 的建议构建一个代表您的实体的对象。

在这种情况下,您将拥有一个 Team 对象,其属性在 CSV 文件中表示。然后您将让您的 Team 对象实现 Comparable界面。

此接口(interface)的目的是为您提供对 Team 对象集合进行排序的方法。完成此操作后,您只需执行 Collections.sort(myTeamCollection) 即可对集合进行排序。

这应该允许代码更容易理解,并且程序中的困惑更少。

关于java - 使用 Double 列表对相应的 String 列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34128642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com