改变数组的输出

时间:2013-09-29 19:54:03

标签: java arrays string

我遇到了一项任务,我们必须将“是”和“no”数组中的每个输出都替换为“no”,并保持其他输出不变。

我一直收到错误cannot convert from String to String[],我不确定如何解决这个问题,因为我无法找到任何StringString[]转换Javadoc中。

我一直试图找到一个解决方案,所以我只需要朝着正确的方向努力。

String[] makeItANegativeArray(String[] inputArray) {
    String x = "no";
    if (inputArray.equals("yes")) {
        return x;
    } else {
        return inputArray;
    }
}

4 个答案:

答案 0 :(得分:2)

让我们来看看代码

//Start the function
String[] makeItANegativeArray( String [] inputArray ) {

// function needs    String[] as input
// function suspects String[] as output (or return)

    // initialise the variable x
    String x = "no";

    // if the input array is equal to the string VALUE "yes"
    // (which is WEIRD because it's an ARRAY not a VALUE)
    if (inputArray.equals("yes"))
    {
        //return A VALUE
        //so here we return a VALUE while the function is suspecting an ARRAY
        //this causes the error
        return x;
    }
    else 
    {
        //return an array
        //(hence if this happens, the function terminates at the first iteration)
        return inputArray;
    }
}

显然,您的输入为array,您的输出也应为array

因此,在返回任何之前,您必须遍历输入数组的每个元素并构造和输出数组。

例如:

String[] makeItANegativeArray( String[] inputArray ) {

    String x = "yes";
    String y = "no";

    for (int i = 0; i < inputArray.length; i++)
    {
        if (inputArray[i].equals("yes"))
        {
            inputArray[i] = y;
        }
        else 
        {
            inputArray[i] = x;
        }
    }

    return inputArray;
}

这样做是将数组中的每个“”转换为“ no ”,并将每个“ no ”转换为“< EM>是”。 所以它有点“反转”数组。

这是它应该做的吗?

<强>可替换地,

如果您只想将整个数组转换为仅包含“ no ”的数组,请执行以下操作:

String[] makeItANegativeArray( String[] inputArray ) {

    String x = "no";

    for (int i = 0; i < inputArray.length; i++)
    {
        if (inputArray[i].equals("yes"))
        {
            inputArray[i] = x;
        }
    }

    return inputArray;
}

答案 1 :(得分:1)

注意:您正在处理数组。

inputArray.equals("yes")是导致错误的原因。您应该获取Array中的每个元素并将其与“yes”进行比较。

错误告诉您的是,您无法将String数组与String进行比较。

答案 2 :(得分:0)

您要对String[] inputArray做什么。因为您正在比较它的值,就好像它是一个String对象,而不是一个String数组。如果你想访问inputArray的第一个元素,然后比较它的值,那么那将在makeItNegativeArray(String[])

String[] outputArray = new String[inputArray.length];
for (int i = 0; i < inputArray.length; i++)
{
    if (inputArray[i].equals("yes"))
    {
        outputArray[i] = "no";
    }
    else 
    {
        outputArray[i] = "yes"
    }
}
return outputArray;

我建议您查看Java中Arrays的使用以及它们与单个对象的区别。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html因为这可以让您真正掌握数组的使用以及如何访问它们。数组在编程中是一个非常重要的概念,如果你能掌握它,你将迈出另一步,成为一个明星。

答案 3 :(得分:0)

你应该这样做

String [] makeItANegativeArray( String [] inputArray ) 
{
for(int i = 0; i < inputArray.Length; i++)
{
    if (inputArray[i].equals("yes"))
    {
        inputArray[i] = "no";
    }
}
return inputArray;
}

当你说inputArray.equals时,它会将数组与字符串进行比较并产生错误。你必须遍历数组中的所有元素并将yes设置为no并返回已编辑的数组。