我尝试使用Java来解决一个简单的挑战,但我没有成功,我找不到答案。想法是用户输入一串文本,程序返回该字符串中最长的单词。我可以使用Scanner接受来自用户的输入,然后使用.split()方法将字符串拆分到.split(" ")
的空格处,但我无法弄清楚如何将拆分句子存储在我可以迭代找到最长的单词的数组。我总是得到一个如下所示的控制台输出:
[Ljava.lang.String;@401a7a05
我已经注释掉了我认为应该找到最长字的代码,以便专注于无法使用Scanner输入来创建字符串数组的问题。我的代码目前是:
import java.util.*;
import java.io.*;
class longestWord {
public static void main(String[] args) {
int longest = 0;
String word = null;
Scanner n = new Scanner(System.in);
System.out.println("enter string of text: ");
String b = n.nextLine();
String c[] = b.split(" ");
//for (int i = 0; i <= b.length(); i++) {
// if (longest < b[i].length()) {
// longest = b[i].length();
// word = b[i];
// }
//}
//System.out.println(word);
System.out.println(c);
}
}
答案 0 :(得分:0)
那是因为你在迭代字符串而不是数组,并尝试输出整个数组。将for循环更改为使用c
代替:
for (int i = 0; i < c.length; i++) //In an array, length is a property, not a function
{
if (longest < c[i].length())
{
longest = c[i].length();
word = c[i];
}
}
那应该修复你的第一个输出。然后,您想要更改输出数组的方式,将其更改为:
System.out.println(Arrays.toString(c));
将显示如下数组:
[word1, word2, word3, word4]
所以你想把输入作为一个字符串并自动使它成为一个数组?您只需在扫描仪上split
后调用nextLine
函数即可完成此操作:
String[] wordArray = n.nextLine().split(" ");
答案 1 :(得分:0)
您的代码中存在许多错误。这样的
你是迭代不在数组上的字符串。
if (longest < b[i].length())
因为b是你的字符串而不是字符串数组
试试这个它将起作用它将打印最长的单词及其大小。 class Test {
public static void main(String[] args) {
int longest = 0;
String word = null;
Scanner n = new Scanner(System.in);
System.out.println("enter string of text: ");
String b = n.nextLine();
String c[] = b.split(" ");
for (int i = 0; i < c.length; i++) {
if (longest < c[i].length()) {
longest = c[i].length();
word = c[i];
}
}
System.out.println(word);
System.out.println(longest);
}
}