1

我被困在一个任务中,我们必须将来自“是”数组的每个输出替换为“否”,并保持任何其他输出不变。

我不断收到错误cannot convert from String to String[],我不确定如何解决这个问题,因为我无法在 Javadoc中找到任何String要转换的内容。String[]

我一直在努力寻找解决方案,所以我只需要朝着正确的方向前进。

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

4 回答 4

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;
    }
}

显然,您的输入是 an array,您的输出也应该是 an 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;
}

这样做是将数组中的每个“ yes ”变成“ no ”,每个“ no ”变成“ yes ”。所以它有点“反转”数组。

这是它应该做的吗?

或者,

如果您只想将整个数组变成一个只有“ 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;
}
于 2013-09-29T20:00:10.940 回答
1

注意:您正在处理一个数组。

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

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

于 2013-09-29T19:57:45.617 回答
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 并返回编辑后的数组。

于 2013-09-29T20:06:37.957 回答
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 中数组的使用以及它们与单个对象的区别。http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html因为这可以让您真正掌握数组的用法以及如何访问它们。数组是编程中一个非常重要的概念,如果你能掌握它,你将更进一步成为明星。

于 2013-09-29T19:58:53.827 回答