String[] 无法转换为 String
String[] cannot be converted to String
所以我正在编写一个程序,我要求用户输入数组的大小并用名称填充它。稍后我要求用户键入数字,程序将在数组中搜索具有长度的名称。但是我不断收到不兼容的类型错误。 String[] 无法转换为字符串。
package LAB4_1;
import java.util.Arrays;
import java.util.Scanner;
public class LAB4_1
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String names [];
int length_typed;
String names_printed;
// Read the number of kids
System.out.print("How many kids are there? ");
int size = sc.nextInt();
// Read the names of the kids
String [] kids = new String [size];
for (int k = 0; k < kids.length; k++)
{
System.out.print("Enter name of kid #" + k + ": ");
kids[k] = sc.next();
}
// Print all the names of the kids and the length of their names
System.out.println("Names of kids with lengths are: ");
for (int i = 0; i < kids.length; i++)
{
System.out.println(kids[i] + " " + kids[i].length());
}
// Prompt for sequence of name lengths:
System.out.print("Enter lengths of names as promted, 0 to terminate.");
// Read the lengths and print list of names till 0 is entered
length_typed = sc.nextInt();
错误在这里
names_printed = LAB4_1.filterByLength(names, length_typed);
String[] 无法转换为 String。我没有正确调用该方法吗?
System.out.println(names_printed);
}
/**
* Count the number of names in an array that have a certain length
* @param names: An array of names
* @param length : an integer length
* @return the number of names in the array whose length is given
*/
static int countByLength(String [] names, int length)
{
int count = 0;
for(int i = 0;i < names.length;i++)
{
if(names[i].length() == length)
count++;
}
return count;
}
/**
* Filter an array of names and keep only those names with a given length
* @param names: an array of names
* @param length: an integer length
* @return the array of names that have the given length
*/
static String [] filterByLength(String [] names, int length)
{
String [] filtered = new String[countByLength(names, length)];
int index = 0;
for(int k = 0; k < filtered.length; k++)
{
if(names[k].length() == length) filtered[index++]=names[k];
}
return filtered;
}
}
不,您没有正确调用该方法。您的方法 filterByLength
returns 类型 String[]
。您试图将值放在 String
对象中,即 names_printed
.
那是行不通的。将您的 names_printed
重新键入为 String[]
,您的代码应该可以正常工作。但是,您将无法使用 println
并获得可读的输出。你应该使用 println(Arrays.toString(names_printed))
.
所以我正在编写一个程序,我要求用户输入数组的大小并用名称填充它。稍后我要求用户键入数字,程序将在数组中搜索具有长度的名称。但是我不断收到不兼容的类型错误。 String[] 无法转换为字符串。
package LAB4_1;
import java.util.Arrays;
import java.util.Scanner;
public class LAB4_1
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String names [];
int length_typed;
String names_printed;
// Read the number of kids
System.out.print("How many kids are there? ");
int size = sc.nextInt();
// Read the names of the kids
String [] kids = new String [size];
for (int k = 0; k < kids.length; k++)
{
System.out.print("Enter name of kid #" + k + ": ");
kids[k] = sc.next();
}
// Print all the names of the kids and the length of their names
System.out.println("Names of kids with lengths are: ");
for (int i = 0; i < kids.length; i++)
{
System.out.println(kids[i] + " " + kids[i].length());
}
// Prompt for sequence of name lengths:
System.out.print("Enter lengths of names as promted, 0 to terminate.");
// Read the lengths and print list of names till 0 is entered
length_typed = sc.nextInt();
错误在这里
names_printed = LAB4_1.filterByLength(names, length_typed);
String[] 无法转换为 String。我没有正确调用该方法吗?
System.out.println(names_printed);
}
/**
* Count the number of names in an array that have a certain length
* @param names: An array of names
* @param length : an integer length
* @return the number of names in the array whose length is given
*/
static int countByLength(String [] names, int length)
{
int count = 0;
for(int i = 0;i < names.length;i++)
{
if(names[i].length() == length)
count++;
}
return count;
}
/**
* Filter an array of names and keep only those names with a given length
* @param names: an array of names
* @param length: an integer length
* @return the array of names that have the given length
*/
static String [] filterByLength(String [] names, int length)
{
String [] filtered = new String[countByLength(names, length)];
int index = 0;
for(int k = 0; k < filtered.length; k++)
{
if(names[k].length() == length) filtered[index++]=names[k];
}
return filtered;
}
}
不,您没有正确调用该方法。您的方法 filterByLength
returns 类型 String[]
。您试图将值放在 String
对象中,即 names_printed
.
那是行不通的。将您的 names_printed
重新键入为 String[]
,您的代码应该可以正常工作。但是,您将无法使用 println
并获得可读的输出。你应该使用 println(Arrays.toString(names_printed))
.