Java 如果在字符串中,单词中出现的相邻字母相同,则打印;“相同”;否则";“差别”;

Java 如果在字符串中,单词中出现的相邻字母相同,则打印;“相同”;否则";“差别”;,java,Java,我正在尝试,但有时输入4整数,它会给出错误的输出。请更新我的代码或给我一些想法。下面是我的示例输出。以及我正在尝试的代码 示例输出:- 输入:- 3. 记得 发生 苹果 差异 同样的 相同的 代码:- 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++) { Syste

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

示例输出:-

输入:-
3.
记得
发生
苹果
差异
同样的
相同的
代码:-

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

}
Scanner sc=新扫描仪(System.in);
System.out.println(“输入一个数字”);
int标志=1;
int a=sc.nextInt();

对于(int i=0;i代码的问题是,您从未重置您的标志。如果您有一个“相同”的情况,那么您的标志将在程序的其余执行时间保持在0。因此,在第一个“相同”之后的所有情况也将产生“相同”。要解决此问题,请将
标志=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....

用于(int i=0;i代码的问题是,您从未重置您的标志。如果您有一个“相同”的情况,那么您的标志将在程序的其余执行时间保持在0。因此,在第一个“相同”之后的所有情况也将产生“相同”。要解决此问题,请将
标志=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....

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

封装测试;
导入java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入一个数字”);
布尔标志=真;
int a=sc.nextInt();

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

封装测试;
导入java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入一个数字”);
布尔标志=真;
int a=sc.nextInt();

对于(inti=0;i只需使用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");
}

只需使用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");
}

你也可以发布你没有得到正确结果的输入吗?输入:-4还记得发生的苹果qwert diff相同这里我得到相同的输入“qwert”,但我想要“diff”当你要求输入3时,你应该在这3个字符串之后输入!不要更多…你的代码工作正常!!明白了,看起来标志没有像其他人所指示的那样重置。是的,这就是我刚刚发现的HHhc。你可以发布你没有得到正确结果的输入吗?输入:-4记住发生的苹果QWER差异不一样这里我得到的是same表示输入“qwert”,但我想要“diff”当你要求输入3时,你应该在这3个字符串之后输入!不要更多…你的代码工作得很好!!明白了,看起来标志没有像其他人指示的那样重置。是的,这就是我刚才发现的hhhno问题,你也可以尝试为变量使用名称而不是字母,比如a的numOfStrings,sq的stringToCheck和s.m的tempString使您的代码更具可读性。没问题,您还可以尝试对变量使用名称而不是字母,例如a的numOfStrings、sq的stringToCheck和s的tempString。这样可以使代码更具可读性。