我正在使用 Java 的MessageFormat
类来创建一个字符串,该字符串使用该format
方法将多个条件语句作为参数。有了它,我创建了一个使用 ASCII 字符的温度计,它接受一个随机数作为摄氏度,并根据该数字,根据条件在特定位置将星号字符插入到字符串中,例如((celsius >= 25) ? "*" : " ")
。换句话说,星号代表温度计中的温度水平,具体取决于温度值。
目前,我在 14 个参数中的每一个参数中都使用了类似的 if 语句,然后确定它是否应该在所述位置添加星号temp >= location
或空白空间temp <= location
。我确信使用另一种方法(例如嵌入式 for 循环、正则表达式、函数、内置方法等)有一种更有效和更清洁的方法。
这是代码示例(注意转义字符):
// random value between -35 and 40
double celsius = Math.round(Math.random() * (40 - 35) - 35);
// ASCII Thermometer
String meter = MessageFormat.format(
" ______________________"
+ "\r\n | ^F _ ^C |"
+ "\r\n | 100 - |{0}| - 40 |"
+ "\r\n | 90 - |{1}| - 30 |"
+ "\r\n | 80 - |{2}| - 25 |"
+ "\r\n | 70 - |{3}| - 20 |"
+ "\r\n | 60 - |{4}| - 15 |"
+ "\r\n | 50 - |{5}| - 10 |"
+ "\r\n | 40 - |{6}| - 5 |"
+ "\r\n | 30 - |{7}| - 0 |"
+ "\r\n | 20 - |{8}| - -5 |"
+ "\r\n | 10 - |{9}| - -10 |"
+ "\r\n | 0 - |{10}| - -20 |"
+ "\r\n | -10 - |{11}| - -25 |"
+ "\r\n | -20 - |{12}| - -30 |"
+ "\r\n | -30 - |{13}| - -35 |"
+ "\r\n | '***` |"
+ "\r\n | (*****) |"
+ "\r\n | `---' |"
+ "\r\n |____________________|"
+ "\r\n\r\n",
((celsius >= 35) ? "*" : " "),
((celsius >= 30) ? "*" : " "),
((celsius >= 25) ? "*" : " "),
((celsius >= 20) ? "*" : " "),
((celsius >= 15) ? "*" : " "),
((celsius >= 10) ? "*" : " "),
((celsius >= 5) ? "*" : " "),
((celsius >= 0) ? "*" : " "),
((celsius >= -5) ? "*" : " "),
((celsius >= -10) ? "*" : " "),
((celsius >= -15) ? "*" : " "),
((celsius >= -20) ? "*" : " "),
((celsius >= -25) ? "*" : " "),
((celsius >= -30) ? "*" : " "));