如果在字符串中相邻的字母相同,则打印"相同"否则"差异"

时间:2015-06-07 14:06:56

标签: java

我正在尝试但是有时候输入4整数会产生错误的输出。请更新我的代码或给我一些想法。以下是我的示例输出。和我正在尝试的代码。

示例输出: -

input:-
3
remember
occurring
apple



diff
Same
same

代码: -

Scanner sc=new Scanner(System.in);
System.out.println("enter a number");
int flag=1;

int a=sc.nextInt();
for (int i = 0; i <a; i++) {

    System.out.println("enter a string");
    String s=sc.next();
    char [] sq=s.toCharArray();
    for (int j = 0; j < sq.length-1; j++) {
        if(sq[j]==sq[j+1]) {
            flag=0;
            break;
        }
    }

    if(flag==1) {
        System.out.println("diff");
    } else {
        System.out.println("same");
    }

}

3 个答案:

答案 0 :(得分:2)

您没有将标志重置为每次运行之间的初始值。请注意,我已将您的标志更改为布尔值而不是整数,现在它在System.out.println()之前重置;

package test;

import java.util.Scanner;

public class test {

public static void main(String[] args) {

    Scanner sc=new Scanner(System.in);
    System.out.println("enter a number");
    boolean flag=true;

    int a=sc.nextInt();
    for (int i = 0; i <a; i++) {

        flag=true;
        System.out.println("enter a string");
        String s=sc.next();
        char [] sq=s.toCharArray();

        for (int j = 0; j < sq.length-1; j++) 
        {

            if(sq[j]==sq[j+1])
            {
                flag=false;
                break;
            }
        }

        if(flag)
        {
            System.out.println("diff");
        }
        else
        {
            System.out.println("same");
        }

    }

}

}

答案 1 :(得分:2)

只需使用Regex:简短的

public static void main(String[] args) {
    String s = "dess";
    boolean match = s.matches(".*([A-Za-z])\\1+.*");

    if (match)
        System.out.println("same");
    else
        System.out.println("diff");
}

答案 2 :(得分:1)

您的代码问题是您永远不会重置您的旗帜。如果你有一个“相同”的情况,那么你的标志将在程序的剩余执行时间内保持为0。因此,在第一个'相同'之后的所有情况也将产生'相同'。要解决这个问题,请将flag = 0代码移到第一个while循环中。就像这里的某个地方:

for (int i = 0; i <a; i++) {
   flag = 1;//<-- reset your flag variable
   System.out.println("enter a string");
   String s=sc.next();
   char [] sq=s.toCharArray();
   for (int j = 0; j < sq.length-1; j++) 
   {
       etc....

那应该可以解决你的问题。 我希望这会有所帮助:)