我有这段代码来打印用户定义列表中最长的单词,但结果为空。我已将列表转换为字符串,但它仍然不起作用。
public class no7 {
public static String getLongestString(String[] array) {
int maxLength = 0;
String longestString =null;
for (String s : array) {
if (s.length() > maxLength) {
maxLength = s.length();
longestString = s;
}
}
return longestString;
}
public static void main(String[] str) {
Scanner in = new Scanner(System.in);
System.out.println("Enter a list:");
ArrayList<String> list = new ArrayList<String>();
str = list.toArray(new String[0]);
while (!in.hasNext("done") && !in.hasNext("Done") )
{
list.add(in.next());
}
String longestString = getLongestString(str);
System.out.format("longest string: '%s'\n", longestString);
}
}
最佳答案
首先,public static void main(String[] str) {
然后str = list.toArray(new String[0]);
这不是什么main
的参数仅供引用。
此外,如果您在填充列表本身之前将列表内容分配给 str
,str
将不会包含用户输入的内容。
最后,为什么 getLongestString
不能简单地接受和使用 List
而不是数组?无论如何,您都会按顺序访问它。
所有这些都转化为
public class no7 {
public static String getLongestString(List<String> array) {
int maxLength = 0;
String longestString =null;
for (String s : array) {
if (s.length() > maxLength) {
maxLength = s.length();
longestString = s;
}
}
return longestString;
}
public static void main(String[] str) {
Scanner in = new Scanner(System.in);
System.out.println("Enter a list:");
ArrayList<String> list = new ArrayList<String>();
while (!in.hasNext("done") && !in.hasNext("Done") )
{
list.add(in.next());
}
String longestString = getLongestString(list);
System.out.format("longest string: '%s'\n", longestString);
}
}
顺便说明一下,类名的 no7
不遵守 java 命名约定。它应该是 No7
(记住相应地重命名文件)。
关于java - 如何打印用户定义列表中最长的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60432517/