如何创建一个使用循环格式化数组输出的方法

时间:2016-11-05 04:40:05

标签: java arrays

我正在创建一个类,该类调用未知大小和未知值的数组上的方法。除了格式化输出的方法之外,我完成了整个过程。这堂课是关于更衣室租赁的。如果第一个储物柜租了两天,那就是这样:

    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

2 个答案:

答案 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]);