1

変数入力を使用して時間をフォーマットしようとしています。ユーザーが 1 から 9 までの時間を入力すると、出力には「0」が含まれ、分の場合も同様です。これまでのところ、ユーザーが 1 時間 3 分と入力すると、出力は 01:03 ではなく 1:3 と表示されます。

10 未満の数字の前に余分な 0 を付ける方法を教えてください。

これがコードです.....

import java.util.Scanner;

public class FormatTime {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int MinutesInput;
        int HoursInput;
        int Hours;
        int Minutes;

        {
            System.out.println("Enter hours between 1 and 24");
            Hours = input.nextInt();
            System.out.println("Enter minutes between 1 and 59");
            Minutes = input.nextInt();

            {
                **//THIS NEXT LINE IS THE PROBLEM**
                HoursInput = Hours < 10 ? "0" + Hours : Hours;
                System.out.print(HoursInput + ":");
            }
            {
                **//THIS NEXT LINE IS THE PROBLEM**
                MinutesInput = (Minutes < 10) ? "0" + Minutes : (Minutes); 
                System.out.print(MinutesInput);
            }
            System.out.println();
        }

    }
}
4

4 に答える 4

3

10 未満の数字の前に余分な 0 を付ける方法を教えてください。

ターゲット変数が type である間は、そうしませんint。Anintは単なる数値であり、文字列ではありません - 一方、"0" + Hoursは文字列です。

int値には、いかなる種類の文字列表現も含まれていません。数字の 16 は、「16」と同じくらい「0x10」または「0b10000」です。(「00016」は 14 と誤解される可能性がありますが、8 進数の文字列として解析されると...)

DecimalFormat数値を目的の形式の文字列に変換するために使用するか、コンソールに直接書き込みたいString.format場合にのみ使用します。PrintStream.printf

また、ローカル変数に を使用し、最初に必要になったときにのみ宣言することを強くお勧めします。camelCase

于 2012-11-03T20:55:39.377 に答える
1

おそらくあなたは使用しているはずです

System.out.printf("%02d:%02d%n", Hours, Minutes);
于 2012-11-03T20:55:32.827 に答える
0

あなたは混乱intしていて、次のように入力していStringます:

int HoursInput;
//...
HoursInput = Hours < 10 ? "0" + Hours : Hours;

コードには 2 つの問題があります。文字列"07"(または類似のもの) をint. 第 2 に、たとえそれが可能であったとしても、整数型に関する限り07は同等です(先頭には特別な 8 進数の意味がありますが、それは重要ではありません)。70

代わりにこれを試してください:

String hoursInput;
//...
hoursInput = Hours < 10 ? "0" + Hours : "" + Hours;
于 2012-11-03T20:56:01.573 に答える
0

String 変数を使用するか、String クラスの format メソッド (c の sprintf と同様) を使用する必要があります。

String time = String.format("%02d:%02d", hours, minutes );
于 2012-11-03T20:57:34.967 に答える