如何在Java中识别字符串数组中最长的字母单词?(任何不带符号或数字的子字符串)
我是Java新手,我需要解决一个需要以下内容的练习: 对于用户输入的字符串,返回最大的单词(到目前为止,这里还不错) 但是,应该考虑到数字和符号不是文字 例如:如何在Java中识别字符串数组中最长的字母单词?(任何不带符号或数字的子字符串),java,arrays,string,character,Java,Arrays,String,Character,我是Java新手,我需要解决一个需要以下内容的练习: 对于用户输入的字符串,返回最大的单词(到目前为止,这里还不错) 但是,应该考虑到数字和符号不是文字 例如:Hello,我的名字是Jonathan,我的电话是0123456789应该返回“Jonathan”作为最长的单词 示例2:h3llow0rld,java1s有趣,应将“Java”作为最长单词返回 在我的伪代码中,我考虑了以下内容: A) 请求用户输入。 B) 当输入无效时,循环。 C) 扫描输入 D) 用空格或标记分隔单词。 E)
Hello,我的名字是Jonathan,我的电话是0123456789
应该返回“Jonathan”
作为最长的单词
示例2:h3llow0rld,java1s有趣
,应将“Java”
作为最长单词返回
在我的伪代码中,我考虑了以下内容:A) 请求用户输入。
B) 当输入无效时,循环。
C) 扫描输入
D) 用空格或标记分隔单词。
E) 如果Word仅包含字母A-Z&&A-Z,请执行以下代码:
e1)检查最长的字,并用a表示。
e2)打印结果
F) else if:移动到下一个单词 这是我目前掌握的代码。正如您所看到的,许多部分都取自这里,并根据代码进行了调整。“查找数组中最长的字符”是一个流行的主题,但我无法检查字母字符。 欢迎任何帮助 问题是我不知道如何实现检查字母的部分 代码:
package-longestword;
导入java.util.Scanner;
公共类最长单词{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.print(“输入字符串:”);
//非空字符串的循环
int最大长度=0;
字符串最大单词=”;
字符串userinput=sc.nextLine();
while(userinput.equals(“”){
System.out.println(“请插入字符串:”);
userinput=sc.nextLine();
}
for(字符串b:userinput.split(“”){
if(最长单词.长度()==0){
最大长度=b.长度();
最大单词=b;
}else if(b.length()>=最大长度){
最大长度=b.长度();
最大单词=b;
}
}
sc.close();
System.out.println(“最长单词:+最大单词”);
}
公共布尔值isAlpha(字符串用户输入){
char[]chars=userinput.toCharArray();
for(char c:chars){
if(!Character.isleter(c)){
返回false;
}
}
返回true;
}
}
/*
字符c='*';
如果((c>='a'&&c='a'&&c只需将isAlpha
方法更改为static
,并按如下方式使用它:
for (String b : userinput.split(" ")) {
if (isAlpha(b)) {
if (largestWord.length() == 0) {
largestLength = b.length();
largestWord = b;
} else if (b.length() >= largestLength) {
largestLength = b.length();
largestWord = b;
}
}
}
一种可能更简单的方法是用任何非字母字符分割字符串,让Java的流为您完成繁重的工作:
String longestWorld =
Arrays.stream(userInput.split("[^a-zA-z]"))
.max(Comparator.comparing(String::length).reversed())
.orElse(null);
你为什么不使用你的isAlpha
方法呢?我正在尝试,只是不知道如何实现itThanks!我只需要寻找如何将其转换为静态,但这应该不是一个问题。感谢Eran的帮助!非常感谢:)。@jonakru这很简单-公共静态布尔isAlpha(字符串用户输入){}…
感谢Eran所做的一切。我需要的是IsAlpha的实现。现在代码不能正常工作,比如字符串:“asdasd asd4a65sd4a6s5d4a6sd a6s5d4a6s5d4a6s5d4a ssddasssdddddddddd我得到了3行最长的单词:asdasd,然后是正确的答案。这是由我来纠正的。谢谢你提供的帮助!@jonakru奇怪-我尝试了那个输入,只得到了“最长的单词:ssddaassddddddddddddddddddddddddddddd”发现了错误,我错放了一个“}”,包括System.out.println。因此,对于每个单词检查,它都是迄今为止打印的最长单词。谢谢!!!!!!!!!!!!!!!!!!!!!!!!!谢谢你的回答。你可能是对的。碰巧我现在在课程的开始,所以我们希望它用于循环,更基本的东西。
String longestWorld =
Arrays.stream(userInput.split("[^a-zA-z]"))
.max(Comparator.comparing(String::length).reversed())
.orElse(null);