2017-10-13 7 views
0
import java.util.*; 
public class Practice_7_4 
{ 
    public static void main(String[] args) 
    { 
     int counter = 0; 
     String statement; 
     int length; 
     char space = ' '; 
     String word = ""; 
     char letter; 
     char check; 
     int count = 0; 
     Scanner input = new Scanner(System.in); 

     System.out.print("Enter a string: "); 
     statement = input.nextLine(); 
     length = statement.length(); 
     System.out.print("Entered String: " + statement); 
     while(counter <= length-1) 
     { 
     letter = statement.charAt(counter); 
     for(int charcount = 0; charcount <= length-1; charcount++) 
     { 
      check = statement.charAt(charcount); 
      if(letter != ' ' && charcount < length-1) 
      { 
       if(Character.toLowerCase(letter) == Character.toLowerCase(check)) 
       { 
        count+=1; 
       } 
      } 
     } 
     if(letter != ' ') 
      System.out.printf("\nletter %c:\t %d", letter, count); 
     counter += 1 ; 
     count = 0; 
     } 
    } 
} 

Output of "I am tired" in the program: 
letter i: 2 
letter a: 1 
letter m: 1 
letter t: 1 
letter i: 2 
letter r: 1 
letter e: 1 
letter d: 0 

내 문제는 인쇄 할 때 반복되는 문자 'i'를 어떻게 삭제할 수 있습니까? 두 번, 어떻게 0을 생성하는 대신 마지막 문자를 세는 코드를 얻을 수 있습니까? 이것은 나의 유일한 질문이지만, 자세한 내용을 추가하여 최소 금액에 도달 할 때까지 입력 할 것이라고 말합니다.문자열을 읽고 각 문자가 몇 개 있는지 표시하는 프로그램을 만들려고합니다. 그러나 작동하지 않습니다.

+0

왜 ... ... & charcount <길이 -1>입니까? "charcount' **는 마지막 위치가 아닙니다 **"물론 문장의 마지막 문자는 계산하지 않습니다. –

답변

0

이 목적으로 Collection을 사용할 수 있습니다.

public static void main(String[] args) { 
    int occurrence = 0; 
    String arr="I am tired"; 
    List<Character> nos =new ArrayList<>(); 
    for(int i=0;i<arr.length();i++){ 
     nos.add(Character.toLowerCase(arr.charAt(i))); 
    } 
    Set<Character> uniqueNos = new HashSet<>(nos); 
    for(char temp:uniqueNos) { 
     for(char tempList:nos) { 
      if(String.valueOf(temp).equalsIgnoreCase(String.valueOf(tempList))) { 
       occurrence++; 
      } 
     } 
     if(temp!=' ') 
     System.out.println(temp+ " Appears "+occurrence +" times"); 
     occurrence = 0; 
    } 
} 

먼저 캐릭터의 아라 일주교를 만듭니다. 각 문자를 목록에 저장하십시오.

다음 해시 세트를 만들려면 list.hashset에서 고유 한 데이터 만 포함하십시오.

그러면 해시 세트에서 하나의 char을 선택하고 일치하는 항목이 있으면 increment 항목을 모두 비교하십시오.

0

다음 프로그램이 작업을 수행합니다. 문자열의 문자 배열 제작

  1. 공간으로 이미 본 문자를 대체 할 수 있도록 : 내가 만든

    import java.util.*; 
    
    public class Practice_7_4 { 
    
    public static void main(String[] args) { 
        int counter = 0; 
        String statement; 
        int length; 
        char space = ' '; 
        String word = ""; 
        char letter; 
        char check; 
        int count = 0; 
        Scanner input = new Scanner(System.in); 
    
        System.out.print("Enter a string: "); 
        statement = input.nextLine(); 
        char c[] = statement.toCharArray(); 
        length = statement.length(); 
        System.out.print("Entered String: " + statement); 
        while (counter <= length - 1) { 
         letter = c[counter]; 
         for (int charcount = 0; charcount <= length - 1; charcount++) { 
          check = c[charcount]; 
          if (letter != ' ' && charcount <= length - 1) { 
           if (Character.toLowerCase(letter) == Character.toLowerCase(check)) { 
            //System.out.println(true); 
            count += 1; 
            c[charcount]=' '; 
           } 
    
          } 
         }//System.out.println(Arrays.asList(c).toString()); 
         if (letter != ' ') 
          System.out.printf("\nletter %c:\t %d", letter, count); 
         counter += 1; 
         count = 0; 
        } 
        System.out.println("hello"+statement); 
    } 
    } 
    

    몇 가지 변경.

  2. 찾은 모든 장소에서 검색중인 문자를 공백 ('')으로 바꾸고 개수를 늘립니다.