gpt4 book ai didi

Java 输入中最长的单词

转载 作者:行者123 更新时间:2023-11-29 04:19:34 26 4
gpt4 key购买 nike

我是初学者,我想弄清楚为什么查找最大单词的逻辑不起作用。有时输出会导致正确的最长单词、第一个单词或多个单词。

谢谢!!

附言我真的不关心两个单词长度相同的情况,一旦我弄清楚为什么这不起作用,我将在稍后工作。再次请注意我是初学者/新手。谢谢

import java.util.Scanner;
import java.util.ArrayList;
public class Word
{
public static String word(String str)
{
int longestCount=0;
int count=0;
int newWord=0;
String theWord="";
ArrayList <String> longestWord= new ArrayList <String>();
for (int i=0; i <str.length(); i++)
{
if (str.substring(i,i+1).equals(" "))
{
if (longestCount<count)
{
longestCount=count;
theWord="";
theWord=""+str.substring(newWord,i);
newWord=i+1;
count=0;
}
}
else
{
count++;
}
}
longestWord.add(theWord);
String output="";
for (int i=0; i<longestWord.size();i++)
output+=longestWord.get(i);
return output;
}

public static void main ()
{
Scanner scan= new Scanner(System.in);
String words= scan.nextLine();
System.out.println(word(words));
}
}

最佳答案

你想多了。只需遍历数组列表一次,每当您看到更长的单词时,存储单词/或其索引:

ArrayList <String> words= new ArrayList <String>();
String currLongest = words.get(0);
for (String s : words)
if(s.length() > currLongest.length())
currLongest = s;

如果您的单词作为由空格分隔的单个字符串传递,则过程是相同的。在循环之前将它们分开:

String[] words = str.split(" ");
String currLongest = words.[0];
for (String s : words)
if(s.length() > currLongest.length())
currLongest = s;

请注意,没有必要将最长的单词存储到列表中,因为在任何时间点,应该只有一个 最长的单词。

关于Java 输入中最长的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50224409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com