我不知道如何在JAVA中将整数转换为24小时格式。
例如:
public class Activity
{
private Subject subject;
private int start;
private int duration;
private String room;
private int capacity;
private int enrolled;
public Activity(Subject subject, int start, int duration, String room, int capacity)
{
this.subject = subject;
this.start = start;
this.duration = duration;
this.room = room;
this.capacity = capacity;
}
@Override
public String toString()
{
return subject.getNumber() + " " + start + " " + duration + "hrs" + " " + enrolled + "/" + capacity;
}
}
在toString()方法中,我想将int可变启动转换为格式为HH:00。 start变量是0到18之间的整数。 我尝试添加这样的方法:
public String formatted(int n)
{
int H1 = n / 10;
int H2 = n % 10;
return H1 + H2 + ":00";
}
然后将变量start传递给此方法。但它不起作用。我不明白哪里出了问题。
我需要一些帮助!
PS:结果应该看起来像“48024 18:00 1hrs 0/200”,除了起始变量之外,我得到所有其他正确格式化的变量。
答案 0 :(得分:5)
您的方法失败,因为您的代码等同于:
return (H1 + H2) + ":00";
所以它在追加字符串之前总结每个数字!
你可以"纠正" (或实际上是黑客行为):
return H1 + (H2 + ":00");
甚至更好,请使用String.format
:
public String formatted(int n) {
// print "n" with 2 digits and append ":00"
return String.format("%02d:00", n);
}
答案 1 :(得分:2)
您需要在添加中转换为字符串,否则只需添加数字
public String formatted(int n)
{
int H1 = n / 10;
int H2 = n % 10;
return H1 + "" + H2 + ":00";
}
答案 2 :(得分:0)
你可以这样做:
public String formatted(int n)
{
String hours = "";
if(n < 10)
{
hours = "0" + n;
}
else
{
hours = "" + n;
}
return hours + ":00";
}
答案 3 :(得分:0)
简单的解决方案:return "" + H1 + H2 + ":00";
会这样做。
Java只是从左到右处理这一行。 因此,如果它首先遇到两个整数,它会将它们相加。
但是,如果你开始放String
(即使它是空的),行为将会得到纠正。
还有其他更易读的替代方案:
return String.valueOf(H1) + H2 + ":00";
还有许多实用工具类可以帮助您SimpleDateFormat和Duration感兴趣。但在你的情况下保持简单。 :)