java - 如何将字符串附加到循环外的最佳值?

标签 java loops

我有一项大学作业要做,我想知道是否有人可以帮助我。任务不是很复杂,但我正在为循环而苦苦挣扎。

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 中保存了您关心的名称,但是您打印出了 namehighestrTime

相同
System.out.println(name + gender + rTime);

应该是:

System.out.println(bestRunner + gender + highest);

关于java - 如何将字符串附加到循环外的最佳值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34077774/

相关文章:

windows - 为什么在 Windows 中运行 GHCi 无法检测到无限循环?

java - 即使输入相同,AES/CBC/NoPadding 是否会生成两个不同的密文?

c - 循环遍历条件

如果表中的值满足条件,Vba 宏将从表中复制行

matlab - MATLAB 中的矢量化简介 - 有什么好的教程吗?

java - 从重载类方法调用 super() 是否使用非参数化方法中的变量?

java - 当两个单独的应用程序使用同一个数据库时,Hibernate 一级缓存结果是否会过时?

java - 捕获方法参数类型并请求相应的类对象

java - 具有不同对象参数的重载构造函数

java - 只有最后一个子字符串在 java for 循环中被测试