以下是代码:
import java.util.*;
import java.util.Scanner.*;
import java.util.ArrayList.*;
public class Main {
public static String ToString(int a, double b, String c)
{
String aS = Integer.toString(a);
String bS = Double.toString(b);
String scoreList = (aS + "\t\t" + bS + "\t\t" + c);
return scoreList;
}
private static void start() {
int tries = 0 ;
int guess = -1;
String name ;
String quit = "quit";
String y = "yes";
String n = "no";
String currentGuess;
String another = ("y") ;
Scanner input = new Scanner (System.in);
ArrayList<String> scores = new ArrayList<String>();
boolean a=false;
do {
a=false;
int answer = (int) (Math.random() * 1000 + 1) ;
System.out.println( " Welcome to Guessing Game " ) ;
System.out.print("Please enter a number between 1 and 1000 : ");
currentGuess = input.nextLine();
long startTime = System.currentTimeMillis();
do
{
if (currentGuess.equalsIgnoreCase(quit))
{
System.out.println("Leaving Us So Soon?");
System.exit(0);
}
try {
guess = Integer.parseInt(currentGuess);
} catch (NumberFormatException nfe)
{
System.out.println(" Dude Can You Read, Only Digits ");
currentGuess = input.nextLine();
}
if (guess < 1 || guess > 1000)
{
System.out.println("Stupid Guess I Wont Count That.");
currentGuess = input.nextLine();
}
if (guess < answer )
{
System.out.println("too low "+answer);
currentGuess = input.nextLine();
tries++;
}
else if(guess > answer )
{
System.out.println("too high "+answer);
currentGuess = input.nextLine();
tries++;
}
else if (guess == answer)
{
//stop stop watch
long endTime = System.currentTimeMillis();
//calculate game time
long gameTime = endTime - startTime;
System.out.println("You Rock Dude, Good Job!");
System.out.println("You guessed " + tries + " times in " + (int)(gameTime/1000) + " seconds.");
System.out.println("Please enter your name.");
name = input.nextLine();
//create score object
String TOString =ToString(tries, gameTime, name);
//add score to arrayList
scores.add(TOString);
boolean s = false ;
while (s==false)
{
System.out.print("Want to go again?(y/n).....");
currentGuess = input.nextLine();
if (currentGuess.matches("y"))
{
System.out.println("HighScore: \nGuess \t Time in milisec\tName");
//print out high score list
for (int i = 0;i < scores.size(); i++)
{
System.out.println(scores.get(i));
}
// Main.start
s=true;
}
//if user doesn't want to play again
if (currentGuess.matches("n"))
{
System.out.println("HighScore:\nGuess \tTime in milisec\tName");
//print out high score list
for (int i = 0;i < scores.size(); i++)
{
System.out.println(scores.get(i));
}
System.out.println("Thanx For Playing.");
a=true;
s=true;
System.exit(0);
}
}
}
} while (guess != answer);
}while(a==false);
}
public static void main(String[] args) {
// ArrayList<Score> scores = new ArrayList<Score>();
Main.start();
}
}
答案 0 :(得分:4)
使用Collections.sort()
并确保您的班级实施Comparable
或使用以下内容:
Collections.sort(list, new Comparator<T>() {
public int compare(T o1, T o2) {
return o1.compareTo(o2);
}});
答案 1 :(得分:2)
您可以使用input.nextInt()之类的内容来读取下一个整数而不是下一个String。我没有理由在代码中存储字符串而不是整数。然后,您可以使用其他人建议的内容来组合列表和/或对其进行排序。
我也认为你应该自己做一些阅读。您在评论中提出的一些问题将在Java文档中得到解答。 当有人发布建议时,至少要在API中查找并尝试理解它。人们不会在这里给你所有的代码,他们只会给你提示你需要遵循的。
答案 2 :(得分:1)
要对ArrayList进行排序,您可以使用Collections.sort()
方法;要么只有Comparable
元素列表,要么只有Comparator
。
这是最简单的方法。
在您的情况下Collections.sort(scores)
会做的事情。
答案 3 :(得分:0)
要对列表进行排序,请使用java.util.Collections.sort( list )
。
答案 4 :(得分:0)
要制作三个中的一个列表,您可以使用alist.addAll(anotherList)
。然后按照Collin Hebert的建议对aList
进行排序。
答案 5 :(得分:0)
我在上一篇文章中帮助回答了这个问题。但是,我也会在这里添加它。我想你可能想要一个List而不是一个字符串列表。这将允许您以自然的方式对最终用户尝试的尝试次数进行排序。除了这里的其他答案,最简单的方法是拨打Collections.sort(list)
此外,toString()
方法用于调试目的,或提供人类可读信息。它不应该用于以您使用它的方式创建对象。只是我的.02
答案 6 :(得分:0)
如果您绝对需要始终对列表进行排序,请不要使用ArrayList,请使用PriorityQueue。它可以构造为使用内容的自然排序顺序(即通过每个对象上的Comparable接口),或通过比较器。 PriorityQueue的优点是,即使添加了新项目,它也始终排序。