Я хочу написать программу, которая проверяет каждый символ в строке. Если два символа в строке совпадают, я хочу увеличить счетчик на 1. Программа должна просканировать все символы и дать нам значение. T предназначен для определения количества строк, которые мы введем.

Например: (ввод) 5 AAAA BBBBB ABABABAB BABABA AAABBB

Выход 3 4 0 0 4

Но я получаю 0 3 4 0 0

Не могли бы вы помочь? Что я сделал не так?

 import java.io.*;
 import java.util.*;
 import java.text.*;
 import java.math.*;
 import java.util.regex.*;

public class Solution
{

   public static void main(String[] args)
   {
       int i,T,j,count;
       String S;
       char K;
       count = 0;
       Scanner scan = new Scanner(System.in);
       T = scan.nextInt(); 
       for (i = 0; i <= T - 1; i++)
       {
           count = 0;
           S = scan.nextLine();
           char[] list = new char[S.length()];
           for(j = 0; j <= S.length() - 1; j++)
           {
               list[j] = S.charAt(j);    
           }
           for(j = 1; j <= S.length() - 1; j++)
           {
              if(list[j - 1] == list[j])
              {
                  count++;
              }     
           }
          System.out.println(count);
       }
   }
}
0
harold_finch 24 Дек 2014 в 14:18

2 ответа

Лучший ответ

Я думаю, что что-то вроде приведенного ниже должно вам помочь. Сначала требуется несколько строк, которые будут введены, а затем во введенной строке будет подсчитано количество раз, когда символ совпадает с предыдущим символом. Однако для этого не потребуется последовательность строк, она будет выполнять их одну за другой, см. Пример вывода ниже:

   public static void main(String[] args){  
       int numInput;
       String inputString;
       Scanner scanner = new Scanner(System.in);
       numInput = scanner.nextInt();

       for(int y = 0; y < numInput;y++){           
           inputString = scanner.next();
           char[] chars = inputString.toCharArray();
           int counter = 0;

           char curr;
           for(int x = 0; x < chars.length;x++){
               curr = chars[x];
             if(x>0){
                if(chars[x-1] == curr){
                    counter++;
                }
             }
           }
           System.out.println("Count for string " + inputString + " was " + counter);
       }
       scanner.close();
   }

Тестирование:

5
AASAAB
Count for string AASAAB was 2
AAAAAA
Count for string AAAAAA was 5
AAVAAD
Count for string AAVAAD was 2
MOOMOO
Count for string MOOMOO was 2
MAAAAAA
Count for string MAAAAAA was 5
1
Scott Carpenter 24 Дек 2014 в 12:00

Попробуй это...

public static void main(String[] args) {
    int i, T, j, count;
    String S;
    char K;
    count = 0;
    Scanner scan = new Scanner(System.in);
    T = scan.nextInt();
    for (i = 0; i <= T - 1; i++) {
        scan = new Scanner(System.in);
        count = 0;
        S = scan.nextLine();
        char[] list = new char[S.length()];
        for (j = 0; j <= S.length() - 1; j++) {
            list[j] = S.charAt(j);
        }
        for (j = 1; j <= S.length() - 1; j++) {
            if (list[j - 1] == list[j]) {
                count++;
            }
        }
        System.out.println(count);
    }
}
-1
Learner 24 Дек 2014 в 11:50