我写了一个模拟,想在JFrame
和动画中显示时间。
我通过覆盖paintComponent
方法并重新绘制每个时间步来调用我的动画。
但是,我的时间计数器在(int)seconds
,我知道写文本的唯一方法是g.drawChars
,需要一组字符。
关于如何将我的时间在几秒钟内转换为char数组的任何想法,以便我能以人类可读的方式显示时间?
答案 0 :(得分:3)
假设yourIntValue
表示您的秒数。
new Integer(yourIntValue).toString().toCharArray()
应该可以解决问题。
更简单的方法是使用String.valueOf(yourIntValue).toCharArray()
答案 1 :(得分:1)
String
是char[]
1
因此,您只需将int
转换为String
,然后返回char[]
String.valueOf(i).toCharArray();
1 在该陈述中详细说明。
如果您查看String
课程,您会看到它实现CharSequence
它还声明并添加了javadoc注释
/** The value is used for character storage. */
private final char value[];
为简洁起见,我还将发布String
public String() {
this.offset = 0;
this.count = 0;
this.value = new char[0];
}
您可以查看其他构造函数,了解它如何为每个char[]
构建String
。
<小时/> 的 编辑: 强> 我想评论其他一个答案,但我没有足够的代表,所以我会将其作为答案的一部分发布。
String.valueOf(i).toCharArray();
和
Integer.toString(i).toCharArray();
是(几乎)同一个电话。这是因为valueOf(int i)
的{{1}}方法是:
String
答案 2 :(得分:1)
您可以先转换为String,然后转换为char数组。
int time = 10;
char[] chars = Integer.toString(time).toCharArray();
答案 3 :(得分:0)
我会这样做:
int minutes = seconds / 60;
int remainingSeconds = seconds - (minutes * 60); // or int remainingSeconds = seconds % 60
String time = minutes + ":" + remainingSeconds;
char[] timeCharArray = time.toCharArray();
答案 4 :(得分:0)
您希望将时间格式化还是仅显示为第二次计数?
作为第二个计数:
String.valueOf(yourInt).toCharArray();
要格式化它:
String time = (yourInt/(60*60))+":"+((yourInt/60)%60)+":"+(yourInt%60);
time.toCharArray();
但是图形对象有一个drawString()选项,无论如何都可以跳过toCharArray()步骤。
答案 5 :(得分:0)
将时间从int转换为Date(mmiseconds是你拥有的int,只需将它从几秒转换为毫秒):
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(milliSeconds);
Date date = calendar.getTime();
将日期解析为本地格式并获得一个字符串(格式示例为“dd.MM.yyyy”):
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
String humanReadableDate = sdf.format(date);