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;

}
}

===更新===

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

}
}
4

1 回答 1

0

提示:

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

  2. 在第 2 部分中,编译错误是因为您试图将a分配char给 a String。那是不合法的。但这也不是您应该尝试做的。(想想“追加”,而不是“分配”......)

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

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

  5. 关于第 5 部分,您说:“效果很好,只是我想在所有数字上加 1”。那就去做吧!

于 2013-10-07T00:43:55.447 回答