gpt4 book ai didi

java - 使用数组中的字符串和 int 进行排序

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

我的作业要求我制作一个电视节目,我可以在其中输入节目、删除、修改和排序它们。我坚持的是排序部分。该程序提示用户输入节目名称、新剧集首映的日期和时间,这些都存储在数组中。它按键名称、日期和时间(按字母和数字顺序)排序。

程序提示用户输入其中一个键,然后程序需要按该键对节目进行排序(按天排序将按字母顺序排序)。

我制作了一个类并使用数组来保存输入的节目。这是类(class):

public class showInfo   
{
String name;
String day;
int time;
}

我输入的节目是这样的:

public static void addShow() throws IOException
{
//initialize counter
int i = 0;
arr = new showInfo[i];

showInfo temp = new showInfo();

//input information
do
{
System.out.print("Enter the name of show: ");
String showName = br.readLine();
temp.name = showName;

System.out.print("Enter which day of the week a new episode premieres: ");
String showDay = br.readLine();
temp.day = showDay;

System.out.print("Enter time in 24-hour format (e.g. 2100, 1900): ");
int showTime = Integer.valueOf(br.readLine()).intValue();
temp.time = showTime;

i++;

System.out.print("Would you like to add another show? (y/n) ");
}
while((br.readLine().compareTo("n"))!=0);
}

为了按时间排序,我写了如下方法:

public static void timeSort()
{
int min;
for (int i = 0; i < arr.length; i++)
{

// Assume first element is min
min = i;
for (int j = i+1; j < arr.length; j++)
{
if (arr[j].time < arr[min].time)
{
min = j;
}
}

if (min != i)
{
int temp = arr[i].time;
arr[i].time = arr[min].time;
arr[min].time = temp;
}
}
System.out.println("TV Shows by Time");
for(int i = 0; i < arr.length; i++)
{
System.out.println(arr[i].name + " - " + arr[i].day + " - " + arr[i].time + " hours");
}
}

我的问题是,当我调用它并在 main 中输出它时,它只显示“TV Shows by Time”文本,而不显示节目。为什么是这样? (我应该展示我的完整代码吗?)

我认为我的问题与计数器有关,但我不确定我将如何解决这个问题,因为用户应该输入他们想要的尽可能多的节目并且节目的数量被修改并且其他方法删除。

任何帮助都会很棒!提前致谢!

最佳答案

如果您没有被禁止使用 Java 的集合 API,请使用 Arrays.sort(T[],Comparator)。然后您的程序可以维护三个静态 Comparator 对象——一个用于显示,一个用于日期,一个用于时间。例如,

  static Comparator<showTime> daySort = new Comparator<showTime>(){
public int compare(showTime st1, showTime st2){
return st1.day.compareTo(st2.day);
}
public boolean equals(Object o){
return this==o; /* Easy way out for this method. */
}
};

然后你有一个调用 Arrays.sort 的排序方法(如果有必要的话):

  public static void sort(){
Arrays.sort(arr, daySort);
}

参见 ArraysComparator获取更多信息。

关于java - 使用数组中的字符串和 int 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18804909/

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