编写程序以查找第二个最长的单词而不使用数组

时间:2017-02-27 15:02:40

标签: java

我需要一个java程序来查找句子中第二个最长的单词(不使用数组)。

请帮帮我。

这是我到目前为止的代码:

import java.io.*;
class Second_longest_Trial
{
    public static void main(String args[])throws IOException {
        BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter the sentence");
        String s=in.readLine();
        s=s.trim()+" ";
        String longest=s.substring(0,s.indexOf(' '));
        String sec=longest;
        int l=s.length();
        String temp=" ",str=" ";

        for(int i=s.indexOf(' ')+1;i<l;i++){
            char ch=s.charAt(i);

            if(ch!=' ')
                temp=temp+ch;
            else{
                if(temp.length()>longest.length()){
                    sec=longest;
                    longest=temp;
                }
                else if(temp.length()>sec.length()){
                    sec=temp;
                }
                temp=" ";
            }
        }

        System.out.println("Longest word is "+longest);
        System.out.println("Second Longest word is "+sec);
    }
}

当我提供输入时 -

  

Sayan回家了。

此输出 -

  

最长的词是Sayan   第二长词是Sayan

我应该得到如下输出 -

  

最长的词是Sayan   第二个最长的词是

3 个答案:

答案 0 :(得分:1)

删除您longestsec的初始设置。按以下方式创建它们并temp

String longest="";
String sec="";
String temp="";

for(int i = 0; i < l; i++) {
    ...

为什么要将longestsec都设置为第一个单词 - 如果第一个单词在句子中最长,会发生什么?

然后你的代码产生输出:

  

最长的词是Sayan
  第二个最长的词是家。

这比你现在的更正确,但仍然不是你所期望的......因为句子末尾有.你需要照顾 - 可能会检查{ {1}}稍微复杂一点,并检查ch!=' '。我留下让你弄清楚如何正确地做到这一点。

答案 1 :(得分:0)

这种情况正在发生,因为您已将最长的元素初始化为第一个单词,而sec也将其初始化为最长的元素( Sayan 本身)。现在最长=“Sayan”和sec =“Sayan”,你进入阵列,但你从未发现任何大于最长或秒的单词。

答案 2 :(得分:-1)

这是找到第二个最长单词的基本代码:

       class Second
       {
            public static void main(String str)//str has the required sentence
            {
                String m="",q="";
                int lar=0;
                str=str+" ";
                for(int i=1;i<=2;i++)
                {
                    for(int k=0;k<str.length();k++)
                    {
                       char ch=str.charAt(k);
                       if(ch!=' ')
                       m=m+ch;
                       else
                       {
                           if(m.length()>lar)
                           {
                              q=m;
                              lar=q.length();
                           }
                           m="";
                       }
                     }
                     if(i==1)
                     {
                        System.out.println("The longest word is: "+q);
                        str=str.replace(q," ");
                        lar=0;
                     }
                }
                System.out.println("The second longest word is: "+q);
             }
       }