java - 输出间隔并将数字分解为小时和分钟

标签 java string loops

我正在尝试编写一个程序来计算运行者的预设条目并找出谁是最快的。它应该将时间列出为

苏西329

菲尔445

每个都有相同的间距,但我的总是像上面打印的那样出现。

我也无法将最终结果的时间分解为分钟和小时。

我的问题是:如何使每个输出时间的输出间距相同,无论名称有多长,以及如何将最终时间分为分钟和小时?

如果您给出答案,您能否解释一下每个步骤的工作原理并展示代码的外观?

这是我迄今为止所拥有的:

        final int numRunners = 16;

        String[] names = { "Elena", "Thomas", "Hamilton", "Suzie",
                "Phil", "Matt", "Alex", "Emma", "John", "James",
                "Jane", "Emily", "Daniel", "Neda", "Aaron", "Kate" };

        int[] times = { 341, 273, 278, 329, 445, 402, 388,
                275, 243, 334, 412, 393, 299, 343, 317, 265 };

        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i] + ": " + times[i]);
        }
        fastestRunners(names, times);
    }
    public static void fastestRunners(String [] names, int [] values){
        int i;
        int fastest = 0;
        for (i = 0; i < values.length - 1; i++){
            if ( values [i] < values[i + 1]){
                fastest = i;
            }
            else {
                fastest = i + 1;
            }
        }
        System.out.println("The fastest runner is " + names[fastest] + " whose time in minutes is " + values[fastest]);
    }
}

最佳答案

您缺席了部分类(class)。这永远不会编译。无论如何,我将主循环编写如下:

int fastest = 0;
for (int i = 1; i < values.length; i++) {
    if ( values [i] > values[fastest]) {
        fastest = i;
    }
}

因为你现在拥有的将不起作用。至于分钟和小时,您可以按如下方式计算:

final String name = "Phil";
final int value = 341;
final int hours = value / 60;
final int minutes = value % 60; // modulo
System.out.printf("%-20s: %dh%02dm%n", name, hours, minutes);

关于java - 输出间隔并将数字分解为小时和分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49459952/

相关文章:

java - 使用 Gson 的序列化对象引用

java - JComboBox 对于 JFrame 来说太长

java - Android:从jar中获取Java源代码

c# - CLR 正在优化我的 forloop 变量

java - 特定异常与异常

python - 这个字符串是如何在 python 中格式化的

string - 如何在 Powershell tr​​y/catch block 中放置变量

Python:使用关键短语从字符串中提取文本

检查结构数组是否已满

loops - 更深入地了解循环(for、while、do while、foreach、递归等)