키보드로 단어를 입력받고 어떤 단어가 연속으로 몇개 있는지 확인하는 문제
출력예시)
aabbcccd
a2개 b2개 c3개 d1개
a2b2c3d
System.out.println("문자를 입력하세요");
Scanner in=new Scanner(System.in);
String newa="";
String a=in.nextLine();
int cnt=0;
Scanner 를 import 해주고 입력받은 문자를 a변수에 저장한다.
그리고 출력될 문장을 저장하는 String변수가 필요하기 때문에 newa 를 선언
연속된 횟수를 확인하기 위해 Int 변수 cnt선언
for(int i=0; i<a.length(); i++) {
cnt=0; //포문이 한번 끝날시 cnt값은 0으로 초기화
for(int j=i; j<a.length(); j++) {
if(a.charAt(i)!=a.charAt(j)) {
break;
}else {
cnt++;
}
}
if(cnt>1) { //여러개 나왔다.
newa= newa+a.charAt(i)+cnt;
i=i+cnt-1;
}else {
newa= newa+a.charAt(i);
}
System.out.print(i+" : "+a.charAt(i)+"/");
System.out.print(cnt+ "개가 연속으로 있다.");
System.out.println();
}
System.out.println(newa);
이중포문을 사용하여 글자의 길이만큼 포문을 돈다.
만약 같은 단어가 연속으로 있다면 cnt++ 없다면 break로 for문을 종료 시켜준다.
그렇게 이중for문이 끝났을 때 cnt가 1이상이라면
charAt(i)로 단어를 잘라주고 몇개 있는지 출력해준다.
for문이 한번 끝날때마다 cnt는 0으로 초기화 시켜주고 다시 다음 단어를 확인
cnt가 1이하라면 연속되지 않으니 newa에 cnt를 포함하지 않는다.