2013-10-07 203 views
0

我已經花了一天的時間來處理這兩個類。我比我期待的更進一步,但不用說我遇到了問題。字符串修改幫助

基本上我只需要一個輸入的字符串,並且只返回大寫字母,每個第二個字母,整個字符串,但所有元音都用下劃線交換,字符串中元音的數量和最後位置的所有元音在串。

我專門設計了我的測試儀類,我相信是正確的,有一個菜單可以單獨嘗試每個命令,因此我可以測試每個命令。

這是測試類..

//****************************************** 
// LetterTest.java 
// Written by Sanchez 
// 2013 
//******************************************* 

//=========================================== 
// This program tests the CharAPI class. 
//=========================================== 

import java.util.Scanner; 

public class LetterTest { 

public static void main(String[] args){ 
    //create Scanner for user input 
    Scanner in = new Scanner(System.in); 

    //get user input 
     System.out.println("Please enter a string of letters"); 
     String input = in.nextLine(); 
    System.out.println("\nChoose an option: " 
     +"\n1 - Uppercase, " 
     +"\n2 - Every Second Letter, " 
     +"\n3 - Replace vowels " 
     +"\n4 - Number of vowels " 
     +"\n5 - Positions of vowels"); 
    int choice = in.nextInt(); 

    //Call the method based on user choice 

if (choice == 1) { 
     //each method returns a String 
    System.out.println(LetterAPI.bigLetters(input)); 
} 
else if (choice ==2) { 
    System.out.println(LetterAPI.secondLetter(input)); 
} 
else if (choice ==3) { 
    System.out.println(LetterAPI.vowelsGone(input)); 
} 
else if (choice ==4) { 
    System.out.println(LetterAPI.vowelNumber(input)); 
} 
else { 
    System.out.println(LetterAPI.vowelPositions(input)); 
} 
} 
} 

,這似乎是相當不錯的了,我很高興。

我遇到的問題是在我的課上做操作的對象 我已經在一些事情上使用了//,所以我可以讓它編譯。第一,第二和第四直線不返回任何東西。第三個只交換下劃線的最後一個字母,即使它不是元音,第五個工作得很好,除了我想給所有數字加1以便結果從1開始而不是0.我知道這裏有很多事情要做,但我已經花了一天的時間,最後提出我急需幫助。

這是對象的代碼...

//****************************************** 
// LetterAPI.java 
// Written by Sanchez 
// 2013 
//******************************************* 

//=========================================== 
// Objects of this class manipulate an inputted string. 
//=========================================== 

import java.util.Scanner; 

//contains a set of methods for maniuplaing the string 
public class LetterAPI { 

//print only uppercase letters 
public static String bigLetters(String input) { 
    String result = ""; 
    for (int i = 0; i <input.length(); i++) { 
    char currentLetter=input.charAt(i); 
    if (Character.isUpperCase(currentLetter)) 
    result = result; 
    } 
    return result; 


} 
//print every second letter 
public static String secondLetter(String input) { 
    String result = ""; 
    for (int i = 0; i <input.length(); i++) { 
    //result = input.charAt(input); 
    } 
    return result; 


} 
//all vowels replaced by underscores 
public static String vowelsGone(String input) { 
    String result ="aeiouAEIOU"; 
    for (int i = 0; i<result.length();i++) { 
    result=input.replace(result.charAt(i), '_'); 
    } 
    return result; 


} 
//the numbers of vowels 
public static String vowelNumber(String input) { 
    String result = ""; 
    for (int i = 0; i <input.length(); i++) { 

     if (Character.toLowerCase(input.charAt(i)) == 'a' || Character.toLowerCase(input.charAt(i)) == 'e' || Character.toLowerCase(input.charAt(i)) == 'i' || Character.toLowerCase(input.charAt(i)) == 'o' || Character.toLowerCase(input.charAt(i)) == 'u') { 
      i++; 
     } 

    } 
    return result; 

} 
//the positions of all vowels 
public static String vowelPositions(String input) { 
    String result = ""; 
    for (int i = 0; i <input.length(); i++) { 

     if (Character.toLowerCase(input.charAt(i)) == 'a' || Character.toLowerCase(input.charAt(i)) == 'e' || Character.toLowerCase(input.charAt(i)) == 'i' || Character.toLowerCase(input.charAt(i)) == 'o' || Character.toLowerCase(input.charAt(i)) == 'u') { 
      result = result + i + " "; 
     } 
    } 
    return result; 

} 
} 

=== UPDATE ===

謝謝大家!感謝上帝,我已經取得了一些進展。我已經獲得了第三名和第四名的好成績。第一個只給出了最後一個大寫字母,但現在正在重複我的輸入。第二個是給我回第一個字母。至於最後一個我嘗試了括號,但我似乎已經打破了它,所以我現在把它放回去。這不是關鍵..至少它工作!如果我無法弄清楚這一點,我將不得不提出一個說明,即從0開始計數。但前兩個正在殺死我......至少編譯它。這裏就是我在那麼遠,

//****************************************** 
// LetterAPI.java 
// Written by Sanchez 
// 2013 
//******************************************* 

//=========================================== 
// Objects of this class manipulate an inputted string. 
//=========================================== 

import java.util.Scanner; 

//contains a set of methods for maniuplaing the string 
public class LetterAPI { 

//print only uppercase letters 
public static String bigLetters(String input) { 
    String result = ""; 
    char cl; 
    for (int i = 0; i <input.length(); i++) { 
    cl=input.charAt(i); 
    if (Character.isUpperCase(cl)) 
    input = input + cl; 
    } 
    return input; 


} 
//print every second letter 
public static String secondLetter(String input) { 
    String result = ""; 
    for (int i=0; i<input.length(); i+=2) { 
    input = input + input.charAt(i) + " "; 
    } 
    return input; 


} 
//all vowels replaced by underscores 
public static String vowelsGone(String input) { 
    String vowels ="aeiouAEIOU"; 
    for (int i = 0; i<vowels.length();i++) { 
    input=input.replace(vowels.charAt(i), '_'); 
    } 
    return input; 


} 
//the numbers of vowels 
public static String vowelNumber(String input) { 
    String result = ""; 
    int count = 0; 
    for (int i = 0; i <input.length(); i++) { 

     if (Character.toLowerCase(input.charAt(i)) == 'a' || Character.toLowerCase(input.charAt(i)) == 'e' || Character.toLowerCase( input.charAt(i)) == 'i' || Character.toLowerCase(input.charAt(i)) == 'o' || Character.toLowerCase(input.charAt(i)) == 'u') { 
      count++; 
      result = count + " "; 
     } 

    } 
    return result; 

} 
//the positions of all vowels 
public static String vowelPositions(String input) { 
    String result = ""; 
    for (int i = 0; i <input.length(); i++) { 

     if (Character.toLowerCase(input.charAt(i)) == 'a' || Character.toLowerCase(input.charAt(i)) == 'e' || Character.toLowerCase(input.charAt(i)) == 'i' || Character.toLowerCase(input.charAt(i)) == 'o' || Character.toLowerCase(input.charAt(i)) == 'u') { 
      result = result + i + " "; 
     } 
    } 
    return result; 

} 
} 
+0

'bigLetters':你認爲'result = result'會做什麼?你想要做什麼? 'secondLetter':'for'中的第三個表達式是該程序每次循環執行的內容。通常,它就像'i ++',意思是「將1加到'i'」。但它不一定是。你可以考慮使用除「i ++」之外的東西來做你需要的東西嗎? – ajb

+0

'vowelsGone':你將'result'設置爲元音字符串。在循環中第一次使用'result'來獲得元音,然後將'result'改爲別的。第二次,「結果」仍然是一串元音?如果不是,你將如何得到你需要的元音? 'vowelNumber':你需要一個穿過字符串的整數'i',並且你需要一個不同的整數來保持計數。你不能同時使用'i'。另外,我建議改變'vowelNumber',以便它返回一個'int'。 – ajb

+0

'vowelPositions':你說你想在添加到字符串之前給你的答案加1。好,就這樣做。只要注意'result = result + i + 1 +「」'不起作用,因爲第一個*將''i'作爲字符串附加到'result',然後將'1'附加到'result'作爲串。括號會有幫助。 – ajb

回答

0

提示:

  1. 在第一部分,你這樣做:result = result;這就是荒謬的。它什麼也沒做。

  2. 在第2部分,編譯錯誤是因爲你試圖分配一個charString。這不合法。但這也不是你應該做的。 (認爲​​「追加」,而不是「分配」...)

  3. 在第3部分中,第一個錯誤是:String result = "aeiouAEIOU";。實際上,它應該是String result = input;

  4. 在第4部分中,你計算所有的元音,而不是每個不同的元音。您還需要將計數(或計數)轉換爲String(結果中)。

  5. 關於第5部分,你會說:「工作得很好,除了我想給所有數字加上1」。所以呢!

+0

謝謝。我不確定如何更新我的問題,所以我編輯了它。我取得了很大的進展,現在正在編譯,但沒有得到正確的結果。有任何想法嗎? – phantasms

+0

result = result +(i + 1)+「」。由於i + 1在括號中,而且它們都是數字,所以+將被視爲數字的加法,而不是字符串附加。然後添加的結果將被轉換爲字符串。 – ajb

+0

*「任何想法」* - 坦率地說,你已經有足夠多的提示。 –