2013-10-27 3 views
-3

처음에는 자바에 관해서 꽤 신선합니다. 내 프로그램은 사용자에게 문자열을 물어보고 방금 쓴 내용을 인쇄하기로되어 있습니다. 그러면 모든 문자를 소문자로 바꾸고 문자열에서 모든 공백을 제거하고이를 인쇄해야합니다. 이 후 알파벳 문자 배열을 인쇄하고 별표 (*)를 사용하여 문자열에 문자가 나타날 때마다 표시합니다 (여기서 시작하는 위치조차 알지 못합니다). 방금 배열에 문자열을 인쇄합니다 (올바르지 않습니다). 이것은 내가 지금까지 가지고있는 것이다. 공백이없는 문자열이나 원본이지만 둘 다 인쇄되지 않습니다. 내 개체/배열 명명은 잔인하며 미리 사과드립니다. 여기에 당신이 다음을 수행하는 프로그램 작성할 수 있습니다 본 과제에서 질문 입니다 : 모든 지침은 크게문자 배열의 문자 수 - Java

편집 주시면 감사하겠습니다

  1. 입력에 양의 정수 m를 사용자에게 물어보고, 그 정수를 읽는다. 이 정수를 읽으려면 main에 선언 된 스캐너 객체를 사용하십시오.

  2. m 문자열을 입력하라는 메서드를 호출합니다. 문자열은 으로 읽혀 지므로 한 문자열 st로 연결해야합니다. m 문자열을 읽고 단일 문자열 st를 형성 한 후 메서드는 st를 반환해야합니다. 주 :이 메서드에는, m로 수신하는 int와 main로 선언 된 Scanner 객체를 받기위한 Scanner 객체의 2 개의 파라미터가 있습니다.

  3. 주 인쇄에서는이 메서드에서받은 연결 문자열을 사용합니다.

  4. 주에서 String 객체를 소문자로 변환합니다.

  5. 주에서는 소문자 String 객체를 char 배열로 변환합니다. (모든 글자 은 소문자입니다.)

  6. 방금 ​​만든 문자 배열. 루프 구조가 필요합니다.

  7. 다음과 같은 방법으로 문자 배열을 압축하는 메서드를 호출합니다. 이 메서드는 배열의 알파벳 문자를 계산하고 크기가 해당 개수와 같은 새 배열을 만들고 원래 배열의 문자 만 새 배열에 복사합니다. 새로운 배열을 돌려줍니다.

  8. 주에서 크기가 26 인 정수 배열을 선언하십시오. 두 개의 매개 변수 인 문자 배열 x (소문자 만 포함하고 main에 선언 된 정수 배열 z를 포함하는)를 호출하십시오. 메서드는 정수 배열의 모든 항목을 0으로 설정합니다. 그런 다음 소문자 글자 배열을 처리하고 각 글자가 나오는 횟수를 계산합니다. 힌트 : z [x [i] -97] ++는 계산을 할 수 있습니다. a의 ASCII 코드는 97이므로 x [i]가 'a'이면 z [0]이 증가합니다. 'b'를 지정하면 z [1]이 증가합니다. 이제 정수 배열에 소문자 배열에있는 문자의 도수 분포가 포함됩니다.

  9. 하나의 정수 배열 매개 변수 (빈도 분포 배열을 수신함)를 사용하여 각 문자를 새 줄에 인쇄 한 다음 그 배열 요소의 정수 값과 동일한 별 수를 인쇄하십시오. 이것은 깔끔하게 정렬되어야합니다. 힌트 : i가 0 ≤ ≤ 25 인 인덱스 인 경우, (char) (i + 97)는 소문자 알파벳입니다. 컴퓨터 과학 차의 컵은 아니다처럼

    package lab6; 
    
    import java.util.Scanner; 
    
    public class Lab6 { 
    
        public char sent[]; 
    
    
    public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    System.out.println("enter the number of strings you want: "); 
    int m = input.nextInt(); 
    Lab6 loo = new Lab6(); 
    loo.print(loo.loop(m)); 
    
    
    } 
    
    public String loop(int m) { //print the string that was entered 
    String total = " "; 
    for (int i = 1; i <= m; i++) { 
        Scanner input = new Scanner(System.in); 
        System.out.println("enter string: " + i); 
        String st = input.nextLine(); 
    
        total += st + ""; 
    
    } 
    System.out.println(total); 
    
    return total; 
    
    } 
    
    public void print(String ht) { //print array 
    
    String st = ht.toLowerCase().replaceAll("\\s", ""); 
    sent = st.toCharArray(); 
    for (int i = 0; i < sent.length; i++) { 
        System.out.println(sent[i]); 
    
         } 
        } 
    } 
    
+0

다음은'이것 이후로 알파벳의 문자 배열을 출력하고 별표 (*)를 사용하여 문자열에 문자가 나타날 때마다 표시합니다. ' 소문자로 변환 한 후 공백을 제거하면'* '로 구분 된 모든 문자를 인쇄하려고합니다. –

+4

-1 TA/교수에게 물어 보는 것이 가장 좋은 방법입니다. 귀하는 실제 질문을 게시하지 않았습니다. – Craigy

+0

여기에 실제 질문은 없습니다. 도움이 필요한 것이 무엇인지 구체적으로 설명하십시오. – Fiver

답변

0

는 소리.나는이 코드를 리펙토링하는 것을 강력히 권장하며 그것이하는 일을 왜하는지 이해하려고 노력한다.

public void print(String ht) { // print array 

    String st = ht.toLowerCase().replaceAll("\\s", ""); 
    sent = st.toCharArray(); 

    int[] alphabet = new int[26]; 
    //set all values to 0 
    for(int i = 0 ; i < alphabet.length ; i++){ 
     alphabet[i] = 0; 
    } 
    //Loop through all characters and increment corresponding value 
    for(int i = 0 ; i < sent.length ; i++){ 
     alphabet[sent[i] - 97]++; 
    } 
    //Print character + asterisk for each time the character is used 
    for(int i = 0 ; i < alphabet.length ; i++){ 
     System.out.print((char)(i + 97) + ": "); 
     for(int nChars = 0 ; nChars < alphabet[i] ; nChars++){ 
      System.out.print("*"); 
     } 
     System.out.println(); 
    } 

} 
+0

의견을 보내 주셔서 감사합니다! 이것은 엄청나게 물건을 정리했다. –