2013-10-27 31 views
-3

首先,我談到java時非常新鮮。我的程序應該向用戶詢問字符串並打印他們剛剛輸入的內容。然後應該將所有字符更改爲小寫字母,並從字符串中刪除所有空格並打印出來。在此之後,它應該打印一個字母數組,並使用星號(*)來顯示每個字符出現在字符串中(我甚至不知道從哪裏開始)。現在它只是在數組中打印字符串(不正確)。這是我迄今爲止所擁有的。它將打印沒有空格的字符串或原始字符串,但不能同時打印兩個字符串。我的對象/數組命名是殘酷的,我提前道歉。任何指導,將不勝感激計算字符數組中的字符 - JAVA

編輯:這是一個問題 在這個作業中你要編寫一個程序,將做到以下幾點:

  1. 要求用戶輸入一個正整數m和然後讀取該整數。使用在main中聲明的 Scanner對象來讀取此整數。

  2. 調用將要求用戶輸入m個字符串的方法。由於字符串是 ,所以應該將它們連接成單個字符串st。讀取m個字符串並形成單個字符串st後,該方法應返回st。注意:此方法將有兩個參數,一個int接收m和一個Scanner對象,以接收在main中聲明的Scanner對象。

  3. 主要打印從方法中收到的連接字符串。

  4. 主要將String對象轉換爲小寫。

  5. 主要將小寫字符串對象轉換爲char數組。 (所有字母 將爲小寫。)

  6. 在主打印剛創建的字符數組。 (需要循環結構。)

  7. 調用將以下列方式壓縮字符數組的方法。 該方法將計算數組中字母的字母,創建一個大小等於該數的新數組,並僅將原始數組的字母複製到新數組中。返回新的數組。

  8. 主要聲明一個大小爲26的整數數組。調用一個帶有兩個參數的方法,一個字符數組x(它將只包含小寫字母,而一個整數數組z將接收main中聲明的數組)。該方法會將整數數組中的所有條目設置爲零。然後它將處理小寫字母數組並計算每個字母出現的次數。提示:z [x [i] -97] ++可以進行計數。 a的ASCII代碼是97,所以如果x [i]是'a',那麼z [0]將會增加。 'b'會導致z [1]增加,等等。整型數組現在包含小寫字母數組中字母的頻率分佈。

  9. 調用帶有一個整型數組參數(它將接收頻率分佈數組)的方法,並在一個新行上打印每個字母,後面跟着等於該數組元素中整數值的恆星數。這必須整齊排列。提示:如果我是一個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問問你的助教/教授是否是最好的方法。您尚未發佈實際問題。 – 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

感謝您加入評論!這極大地清理了事情 –