字符串修改帮助



我花了一天的时间研究这两个类。 我已经比我预期的走得更远,但不用说我遇到了问题。

基本上,我必须采用输入的字符串并仅返回大写字母,每个第二个字母,整个字符串,但所有元音都与下划线交换,字符串中的元音数,最后是字符串中所有元音的位置。

我专门设计了我的测试器类,我相信是正确的,有一个菜单来单独尝试每个命令,以便我能够测试每个命令。

这是测试员类。

//******************************************
// 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 个、第 2 个和第 4 个,直接向上不返回任何内容。 第三个只将最后一个字母换成下划线,即使它不是元音,第五个效果很好,除了我想在所有数字上加 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;
}
}
===

更新===

谢谢大家! 感谢上帝,我取得了一些进展。 我已经让第 3 和第 4 个工作得很好。 第一个只给出最后一个大写字母,但现在重复我的输入。 第二个只是把第一封信还给我。 至于最后一个,我尝试了括号,但我似乎打破了它,所以我暂时把它放回去。 这并不那么重要。至少它有效! 如果我无法弄清楚,我将不得不注意计数从 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;
}
}
提示

  1. 在第 1 部分中,您这样做: result = result; 这是荒谬的。 它什么都不做。

  2. 在第 2 部分中,编译错误是因为您尝试将char分配给String。 这是不合法的。 但这也不是你应该尝试做的事情。 (想想"追加",而不是"分配"...

  3. 在第 3 部分中,第一个错误是这样的:String result = "aeiouAEIOU"; . 事实上,它应该是String result = input;.

  4. 在第 4 部分中,您正在计算所有元音,而不是每个不同的元音。 您还需要将计数(或计数(转换为String(结果(。

  5. 关于第 5 部分,您说:"效果很好,除了我想在所有数字上加 1"。 所以去做吧!

最新更新