9

テキストボックスに入力されたテキストを交互に表示します

//     in either Capital or lowercase depending on the original
//     letter changed.  For example:  CoMpUtEr will convert to
//     cOmPuTeR and vice versa.
    Switch.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e )

            String characters = (SecondTextField.getText()); //String to read the user input
            int length = characters.length();  //change the string characters to length

         for(int i = 0; i < length; i++)  //to check the characters of string..
         {             
            char character = characters.charAt(i);          

            if(Character.isUpperCase(character)) 
            {
                SecondTextField.setText("" + characters.toLowerCase());

            }
            else  if(Character.isLowerCase(character))
            {
                 SecondTextField.setText("" + characters.toUpperCase()); //problem is here, how can i track the character which i already change above, means lowerCase**
                }               
         }}     
    });
4

16 に答える 16

16

setTextテキストの内容を追加するのではなく、指定した内容に正確に変更しています。

String最初にフィールドから変換してから、直接適用します...

String value = "This Is A Test";
StringBuilder sb = new StringBuilder(value);
for (int index = 0; index < sb.length(); index++) {
    char c = sb.charAt(index);
    if (Character.isLowerCase(c)) {
        sb.setCharAt(index, Character.toUpperCase(c));
    } else {
        sb.setCharAt(index, Character.toLowerCase(c));
    }
}

SecondTextField.setText(sb.toString());
于 2013-02-20T04:01:35.450 に答える
5

すでに文字を上から下に変更したかどうかを追跡する必要はありません。基本的には次のとおりであるため、コードはすでにそれを行っています。

1   for each character x:
2       if x is uppercase:
3           convert x to lowercase
4       else:
5           if x is lowercase:
6                convert x to uppercase.

そこ (4 行目) にそれがあるという事実は、else最初は大文字だった文字が 2 番目のifステートメント (5 行目) でチェックされないことを意味します。

例、 から始めAます。これは大文字であるため、3 行目で小文字に変換され、次の文字のために 1 行目に戻ります。

で開始するとzif2 行目から 5 行目に直接移動し、そこで大文字に変換されます。大文字でも小文字でもないものは、両方の ifステートメントで失敗するため、そのまま残ります。

于 2013-02-20T03:59:50.553 に答える
4

StringUtils.swapCase()からご利用いただけますorg.apache.commons

于 2013-02-20T04:04:33.907 に答える
3

SecondTextField問題は、元の文字列のすべての文字をチェックした後に値を設定しようとしていることです。一度に 1 文字ずつ変換を「サイド」で実行してから、結果を に設定する必要がありSecondTextFieldます。

元の文字列を調べながら、空の文字列から出力を構成し始めます。文字がなくなるまで、逆の場合に文字を追加し続けます。出力の準備ができたら、 に設定しSecondTextFieldます。

出力を にしString、それを空の string に設定し""、それに文字を追加することができます。これは機能しますが、非効率的なアプローチです。より良いアプローチは、StringBuilderクラスを使用することです。これにより、すべてを破棄せずに文字列を変更できます。

于 2013-02-20T04:02:40.800 に答える
2
String name = "Vikash";
String upperCase = name.toUpperCase();
String lowerCase = name.toLowerCase();
于 2014-01-29T05:31:03.803 に答える
1

ここにあなたはいくつかの他のバージョンです:

public class 回文 {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter a word to check: ");
    String checkWord = sc.nextLine();
    System.out.println(isPalindrome(checkWord));
    sc.close();

}

public static boolean isPalindrome(String str) {        
    StringBuilder secondSB = new StringBuilder();
    StringBuilder sb = new StringBuilder();
    sb.append(str);
    for(int i = 0; i<sb.length();i++){
        char c = sb.charAt(i);
        if(Character.isUpperCase(c)){
            sb.setCharAt(i, Character.toLowerCase(c));
        }
    }
    secondSB.append(sb);
    return sb.toString().equals(secondSB.reverse().toString());
}

}

于 2015-10-14T14:53:46.017 に答える
0
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String satr=scanner.nextLine();
    String newString = "";
    for (int i = 0; i < satr.length(); i++) {
        if (Character.isUpperCase(satr.charAt(i))) {
            newString+=Character.toLowerCase(satr.charAt(i));
        }else newString += Character.toUpperCase(satr.charAt(i));
    }
    System.out.println(newString);
}
于 2015-04-19T06:22:19.687 に答える
-1
    String str1,str2;
    Scanner S=new Scanner(System.in);
    str1=S.nextLine();
    System.out.println(str1);
    str2=S.nextLine();
    str1=str1.concat(str2);
    System.out.println(str1.toLowerCase()); 
于 2018-06-08T09:43:23.873 に答える