0

私はこの 2 つのクラスに 1 日を費やしました。予想していたよりも先に進みましたが、言うまでもなく、問題が発生しています。

基本的に、入力された文字列を取得し、大文字のみ、2 文字ごと、文字列全体を返す必要がありますが、すべての母音はアンダースコアと交換され、文字列内の母音の数、最後に文字列内のすべての母音の位置が返されます。

私は自分のテスター クラスを特別に設計しました。正しいと思いますが、各コマンドを個別にテストできるメニューを用意して、それぞれをテストできるようにしました。

これはテスタークラスです..

//******************************************
// 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 番目は、そのままでは何も返されません。3 番目のものは、たとえそれが母音でなくても、最後の文字をアンダースコアに交換するだけです.ここでは多くのことが行われていますが、私はそれに 1 日を費やし、最終的に助けが必要であることを報告しています。

これはオブジェクトのコードです...

//******************************************
// 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番目をうまく機能させました。最初のものは最後の大文字だけを与えていましたが、今は私の入力を繰り返しています。2 番目は 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 = "";
    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を aに代入しようとしていることが原因です。それは合法ではありません。しかし、それはあなたがしようとすべきことでもありません。(「割り当て」ではなく「追加」と考えてください...)charString

  3. パート 3 で、最初の間違いは次のとおりString result = "aeiouAEIOU";です。実際、そうあるべきですString result = input;

  4. パート 4 では、異なる母音ごとではなく、すべての母音を数えています。また、カウント (またはカウント) をString(in result) に変換する必要があります。

  5. パート 5 については、「すべての数字に 1 を追加したいことを除けば、かなりうまく機能します」と言います。だからやれ!

于 2013-10-07T00:43:55.447 に答える