Java 接受一个句子并打印具有相同连续字符的单词

Java 接受一个句子并打印具有相同连续字符的单词,java,string,character,bluej,Java,String,Character,Bluej,这是我的作业: 接受一个句子并打印连续字符相等的单词 输入:一天一个苹果 产出:苹果保持 以下是我正在进行的工作: import java.util.*; public class Program1 { public static void main(String args[]) { Scanner sc=new Scanner(System.in); System.out.println("Enter a sentence"

这是我的作业:

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

输入:一天一个苹果

产出:苹果保持

以下是我正在进行的工作:

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);
     }
}

我需要做什么?

问题在于:

 m=str.indexOf(' ');

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

你可以这样做来达到效果

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;
    }
}

这是我的建议-D

输入:mi AAAS es质量pp

输出:aasas质量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("");
     }
}
import java.util.*;
公共类代码10
{
公共静态void main(字符串参数[])
{
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入句子”);
字符串s=sc.nextLine();
String str=s.toLowerCase();
字符串cadena=str;
字符串分隔符=“[,;?!\”\\[\]]+”;
字符串[]palabrasSeparadas=cadena.split(分隔符);

对于(int x=0;xIt不运行?您提供了输入,程序打印了输出。谢谢,但您所说的char previousChar=0是什么意思;//请确保在此处输入正确的字符。用户不会在句首键入该字符。很抱歉误解了。初始化
previousChar
v时没有问题变量为0。因此,我已删除了注释。但我已通过使用默认值(NULL)初始化
previousChar
编辑了答案。因此,它不会引起任何问题。
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("");
     }
}