我已經花了一天的時間來處理這兩個類。我比我期待的更進一步,但不用說我遇到了問題。字符串修改幫助
基本上我只需要一個輸入的字符串,並且只返回大寫字母,每個第二個字母,整個字符串,但所有元音都用下劃線交換,字符串中元音的數量和最後位置的所有元音在串。
我專門設計了我的測試儀類,我相信是正確的,有一個菜單可以單獨嘗試每個命令,因此我可以測試每個命令。
這是測試類..
//******************************************
// 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;
}
}
'bigLetters':你認爲'result = result'會做什麼?你想要做什麼? 'secondLetter':'for'中的第三個表達式是該程序每次循環執行的內容。通常,它就像'i ++',意思是「將1加到'i'」。但它不一定是。你可以考慮使用除「i ++」之外的東西來做你需要的東西嗎? – ajb
'vowelsGone':你將'result'設置爲元音字符串。在循環中第一次使用'result'來獲得元音,然後將'result'改爲別的。第二次,「結果」仍然是一串元音?如果不是,你將如何得到你需要的元音? 'vowelNumber':你需要一個穿過字符串的整數'i',並且你需要一個不同的整數來保持計數。你不能同時使用'i'。另外,我建議改變'vowelNumber',以便它返回一個'int'。 – ajb
'vowelPositions':你說你想在添加到字符串之前給你的答案加1。好,就這樣做。只要注意'result = result + i + 1 +「」'不起作用,因爲第一個*將''i'作爲字符串附加到'result',然後將'1'附加到'result'作爲串。括號會有幫助。 – ajb