[英]How to create a method that formats output of an array with a loop
我正在创建一个类,该类在未知大小和未知值的数组上调用方法。 除了格式化输出的方法之外,我已完成全部工作。 这堂课是关于储物柜租金的。 如果第一个储物柜已经租用了两天,那么这将是正确的:
daysLeftRental[0] == 2;
如果可以租用更衣室,那将是对的:
daysLeftRental[0] == -1;
换句话说,任何可用的储物柜的值为-1,因为有人无法租用-1天的储物柜。 我需要按以下方式格式化输出:
Locker 0: 3
Locker 1: Available
Locker 2: 30
等等等等。 我不知道如何格式化我的代码,以便何时
i = position of locker;
daysLeftRental[i] == -1;
我的输出显示“可用”,何时
daysLeftRental[i] >= 0
我的输出说什么值都存储在daysLeftRental [i]中。 供参考,如果我只返回-1而不是字符串“ available”,这就是我的代码的样子
public String toString() {
String formatOutput = " ";
for (int i = 0; i < daysLeftRental.length; i++) {
formatOutput = formatOutput + "\nLocker"
+ i + ": " + daysLeftRental[i];
}
return formatOutput;
}
这将产生:
Locker 0: 3
Locker 1: -1
Locker 2: 30
这是您要尝试的吗?
public String toString() {
String formatOutput = " ";
for (int i = 0; i < daysLeftRental.length; i++) {
formatOutput = formatOutput + "\nLocker "
+ i + ": " + (daysLeftRental[i] == -1 ? "Available" : daysLeftRental[i].toString());
}
return formatOutput;
}
您可以这样做:
public String toString() {
String formatOutput = " ";
for (int i = 0; i < daysLeftRental.length; i++) {
if(daysLeftRental[i] >= 0){
formatOutput = formatOutput + "\nLocker"
+ i + ": " + daysLeftRental[i];
}else{
formatOutput = formatOutput + "\nLocker"
+ i + ": Available";
}
}
return formatOutput;
}
或者,您可以在if语句之前准备一行,然后只需附加最后一个段:
public String toString() {
String formatOutput = " ";
for (int i = 0; i < daysLeftRental.length; i++) {
formatOutput = formatOutput + "\nLocker" + i + ": ";
if(daysLeftRental[i] >= 0){
formatOutput += Integer.toString(daysLeftRental[i]);
}else{
formatOutput += "Available";
}
}
return formatOutput;
}
如果您不希望在if和else中都写同一行,则可以使用变量来保存数字或单词“ Available”
public String toString() {
String formatOutput = " ";
String status = "";
for (int i = 0; i < daysLeftRental.length; i++) {
if(daysLeftRental[i] >= 0){
status = Integer.toString(daysLeftRental[i]);
}else{
status = "Available";
}
//concatenate it:
formatOutput = formatOutput + "\nLocker" + i + status;
}
return formatOutput;
}
并且您可以使用inline-if,如上面的Aruna的答案(如果您理解),否则, 我建议(option-2) ,不要重复太多代码(option-1),也不要声明太多变量(option-3)。
编辑:-----
我不想夸大其词,但是您始终可以使用一种方法,如果您知道如何使用它们,则可以创建一个将返回数字或“可用”的方法。IF语句就可以使用该方法,仅此而已
public String getStatus(int x){
if(x>=0){
return Integer.toString(x);
}else{
return "Available";
}
}
在for循环中,根本不要使用IF语句。 只需将getStatus()
调用的结果连接到该行
formatOutput = formatOutput + "\nLocker" + i + ": " + getStatus(daysLeftRental[i]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.