我有一项大学作业要做,我想知道是否有人可以帮助我。任务不是很复杂,但我正在为循环而苦苦挣扎。
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
//S = Start
//F = Finish
//R = Race ( Final )
byte i = 0;
int sHours = 0, sMinutes = 0, sSeconds = 0;
int fHours = 0, fMinutes = 0, fSeconds = 0;
int sTime = 0, fTime = 0, rTime = 0 ;
int highest = 0;
int rHours = 0, rMinutes = 0, rSeconds = 0;
String name = null, bestRunner = null;
char gender = 0;
for(i = 1; i<=3; i++)
{
System.out.println("Please enter " + i + "runner's name");
name = sc.next();
System.out.println("Please enter" + name + " runner's gender (M / F)");
gender = sc.next().charAt(0);
System.out.println("Enter " + i + "'st runner's STARTING time(Seperated by space) : ");
sHours = sc.nextInt();
sMinutes = sc.nextInt();
sSeconds = sc.nextInt();
System.out.println("Enter " + i + "'st runner's FINISHING time hours: ");
fHours = sc.nextInt();
fMinutes = sc.nextInt();
fSeconds = sc.nextInt();
//Converting to seconds
sTime = ((sHours*3600)+(sMinutes*60)+sSeconds);
fTime = ((fHours*3600)+(fMinutes*60)+fSeconds);
rTime = ((fTime - sTime));
//Best time recording to loop
if (i == 1 || rTime < highest){
highest = rTime;
bestRunner = name;
}
}
System.out.println("Name\t\tGender\t\tStart Time \tFinish time\t\tRACE TIME");
System.out.println(name + gender + rTime);
sc.close();
}
好吧,我的问题是:
if (i == 1 || rTime < highest){
highest = rTime;
bestRunner = name;
}
我想记录我输入的运行者的最佳时间,并在输出行中显示最佳时间和运行者姓名。 (我稍后会处理性别问题) 问题是它总是记录最后一个循环输入,而不是最低的。
以前可能有人问过这个问题,但我仍然无法弄清楚问题出在哪里。
最佳答案
您已经在 bestRunner
中保存了您关心的名称,但是您打印出了 name
。 highest
和 rTime
System.out.println(name + gender + rTime);
应该是:
System.out.println(bestRunner + gender + highest);
关于java - 如何将字符串附加到循环外的最佳值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34077774/