【问题标题】:Accept a sentence and print the words that have same consecutive characters接受一个句子并打印具有相同连续字符的单词
【发布时间】:2015-10-24 12:19:34
【问题描述】:

这是我的作业:

接受一个句子并打印连续字符相等的单词

输入:一天留一个苹果

输出:苹果保留

这是我的工作:

import java.util.*;

public class Program1
{
    public static void main(String args[]) 
    {
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter a sentence");
        String s=sc.nextLine();
        String str=s.toLowerCase(); 
        int l,i=0; char c,d;int a,b,m=0;int n=0; String r=""; String res="";
        l=s.length();
        str=" "+str+" ";
        for(i=0;i<(l-1);i++)
        {
            c=str.charAt(i);
            d=str.charAt(i+1);
            a=c;
            b=d;
            m=str.indexOf(' ');
            n=str.indexOf(' ',(i+1)); 
             if(d==' ')
              { 
               m=str.indexOf(' ',(i-1));
               n=str.indexOf(' ',(i+1));
            }  
            if(a==b)
             {
               r=str.substring(m,n);
               res=res +" "+ r;
              }
            
         }
         System.out.println(res);
     }
}

它被编译,但它没有给出正确的输出。

如果我输入上面的例子,它会返回:

an apple   an apple a day keeps

我需要做什么?

【问题讨论】:

  • 它不运行?您提供输入,程序打印输出。

标签: java string character bluej


【解决方案1】:

问题出在一行:

 m=str.indexOf(' ');

你每次都从句子的开头开始,所以你把句子从头打印到你想要的单词。

【讨论】:

    【解决方案2】:

    你可以这样做来达到效果,

    Scanner sc = new Scanner(System.in);
    System.out.println("Enter a sentence");
    String s = sc.nextLine();
    String str = s.toLowerCase();
    String[] words = str.split(" ");   // Split the sentence into an array of words.
    
    for(String ss : words){
        char previousChar = '\u0000';
        for (char c : ss.toCharArray()) {
            if (previousChar == c) {    // Same character has occurred
                System.out.println(ss);
                break;
            }
            previousChar = c;
        }
    }
    

    【讨论】:

    • 谢谢,你说的 char previousChar = 0 是什么意思? // 只需确保在此处放置正确的字符。用户不会在句子开头输入的内容。
    • 抱歉造成误解。当你用 0 初始化 previousChar 变量时没有问题。所以,我删除了评论。但是我已经通过使用默认 (NULL) 值初始化 previousChar 来编辑答案。所以它不会引起任何问题。
    【解决方案3】:

    这是我的建议。 :-D

    输入: mi aasas es mass pp

    输出: aasas mass pp

    import java.util.*;
    
    public class code10
    {
        public static void main(String args[]) 
        {
            Scanner sc=new Scanner(System.in);
            System.out.println("Enter a sentence");
            String s=sc.nextLine();
            String str=s.toLowerCase(); 
    
            String cadena = str;
            String delimitadores= "[ .,;?!¡¿\'\"\\[\\]]+";
            String[] palabrasSeparadas = cadena.split(delimitadores);
    
            for(int x=0; x<palabrasSeparadas.length; x++)
            {
              char[] tmpstr = palabrasSeparadas[x].toCharArray();
              for(int y=0; y<tmpstr.length; y++)
              {
                if((y+1) < tmpstr.length)
                {
                  if(tmpstr[y] == tmpstr[y+1])
                  {
                    System.out.print(palabrasSeparadas[x] + " ");
                  }
                }
              }
            }
    
            System.out.println("");
         }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2022-12-04
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      相关资源
      最近更新 更多