簡體   English   中英

如果在字符串中單詞中出現的相鄰字母相同,則打印“相同”,否則打印“ diff”

[英]If in a String adjacent letters occurring in the word are same then print “same” otherwise “diff”

我正在嘗試,但有時輸入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");
    }

}

您沒有在每次運行之間將標志重置為初始值。 注意,我已經將標志更改為布爾值而不是整數,並且現在在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");
        }

    }

}

}

只需使用正則表達式即可:更短,更簡單

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

您的代碼的問題是您永遠不會重置標志。 如果情況相同,那么在程序的其余執行時間中,標記將保持為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....

那應該解決您的問題。 我希望這有幫助 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM