我正在创建一个类,该类调用未知大小和未知值的数组上的方法。除了格式化输出的方法之外,我完成了整个过程。这堂课是关于更衣室租赁的。如果第一个储物柜租了两天,那就是这样:
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而不是字符串"可用"
,这就是我的代码的样子。 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
答案 0 :(得分:0)
这是你正在尝试的吗?
>> def f(x:)
>> x + 1
>> end
>> f()
ArgumentError: missing keyword: x
>> f(2)
ArgumentError: wrong number of arguments (given 1, expected 0)
>> f(x:7)
=> 8
答案 1 :(得分:0)
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语句之前准备该行,然后只追加last segmant:
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的回答一样(如果你理解的话) 如果没有,我会推荐(选项-2),没有多少代码重复(选项-1),没有多少变量声明(选项-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]);