甚至可以在带有terny运算符的java中添加0吗?

时间:2014-04-29 20:54:02

标签: java java-ee

您好我已尝试过terny运算符,if else语句以及将int解析为字符串,我正在制作一个读取4:01 4:02的时钟,但输出4:1

这是我的java代码,是否可以添加0?或者我还需要其他的东西?

package bank;

import java.util.*;

/**
 *
 * @author will
 */
public class dClock {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

        Calendar time = Calendar.getInstance();

        int min = 1;//time.get(Calendar.MINUTE);
        int hour =  time.get(Calendar.HOUR_OF_DAY);
        int blank = Integer.parseInt("0");

        int hourOfDay = ((hour > 12) ? (hour - 12) : hour);
        int zero = ((min > 10 ) ? min : blank+min);        
        System.out.println("The time is " + hourOfDay + ":" + zero );


    }

}

3 个答案:

答案 0 :(得分:1)

请看Java Tutorial: Formatting Numeric Print Output

例如:

  long n = 461012;
  System.out.format("%08d%n", n);    //  -->  "00461012"

另一个例子:

  Calendar c = Calendar.getInstance();
  System.out.format("%tl:%tM %tp%n", c, c, c);  // -->  "2:34 am"

答案 1 :(得分:1)

您只需使用模式String.format(pattern,data)

%02d即可
  • %代表模式的开头
  • 2表示输入应至少写成两个字符__
  • 0但如果输入时间短于两个字符,请填写0 _a - > 0a
  • d是数字
  • 的缩写

这意味着数字传递的数字应该用两个字符写,如果有空格(数字太短,如012直到{{ 1}})使用9填充前面的空格。

更多Formatter documentation


演示:

0

输出:String formatted = String.format("%02d:%02d", 4,2); System.out.println(formatted);

答案 2 :(得分:0)

问题在于这一行:

int blank = Integer.parseInt("0");

由于您的空白是整数0,blank + min将与min相同。尝试使用" 0"不改变类型。

此外,正如David Wallace所提到的那样,您应该将(min > 10 )替换为(min >= 10 )(min > 9 )