我遇到了一项任务,我们必须将“是”和“no”数组中的每个输出都替换为“no”,并保持其他输出不变。
我一直收到错误cannot convert from String to String[]
,我不确定如何解决这个问题,因为我无法找到任何String
到String[]
转换Javadoc中。
我一直试图找到一个解决方案,所以我只需要朝着正确的方向努力。
String[] makeItANegativeArray(String[] inputArray) {
String x = "no";
if (inputArray.equals("yes")) {
return x;
} else {
return inputArray;
}
}
答案 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并返回已编辑的数组。