2016-11-13 18 views
0

文字列を大文字にするコードを書き込もうとしています(つまり、 "hello"は "HeLlO"になります)。このフォーラムで別の質問から同様のコードを借用しました(Java Case Switcher) 、コードは大文字(最初)、その後、小文字、などのパターンを有するのではなく、文字のケースを切り替える文字列を大文字に変更しようとしています

を私がこれまで持っているもの:。

public String altCase(String text) 
{ 
     String str = ""; 
     for (int i = 0; i <= text.length(); i++) 
     { 
     char cA = text.charAt(i); 

     if (text.charAt(0).isUppercase) 
     { 
      str += Character.toLowerCase(cA); 
     } 

     if (text.charAt(0).isLowercase) 
     { 
      str += Character.toUpperCase; 
     } 

     if(i != 0 && Character.isUpperCase(cA)) 
     { 
      if (text.charAt(i)-1.isUpperCase || text.charAt(i)+1.isUpperCase) 
      { 
       str += Character.toLowerCase(cA); 
      } 

      else 
      { 
       str += cA; 
      } 
     } 

    if(i != 0 && Character.isLowerCase(cA)) 
     { 
      if (text.charAt(i)-1.isLowerCase || text.charAt(i)+1.isLowerCase) 
      { 
      str += Character.toUpperCase(cA); 
      } 

      else 
      { 
       str += cA; 
      } 
     } 
    } 
     return str; 
} 

私は比較的まだです一般的なコーディングには新しいので、私の非効率性を言い表してください。また、私のコーディングでの経験の欠如から誘発する可能性のある頭痛もありません。私が間違っているのは、「text.charAt(i)-1.isLowerCase」と入力したとき以外は間違っているかもしれませんが、文が少し不合理であるように見えますが、同じことを達成するために何かを思いつくことはできませんもの。それとも、私のエラーは完全にどこかにあるのですか?事前に助けてくれてありがとう。

+0

括弧を慎重に見てください。 – SLaks

+0

カッコが見つからない、追加したり、誤用しましたか?最初の2つを見つけることができないようです。 –

+0

'text.charAt(i)-1'はどういう意味ですか?あなたは何から引きますか? – SLaks

答えて

1

私は本当にあなたが取得したいものを理解していればということである。

がそうで、文字列を取得しABCDEFGの形式でそれを変更....と。

もっと簡単な解決策があります。 文字列を取得し、すべての文字に対してforループを使用し、文字列内の位置に応じて文字サイズを変更します。i%2 == 0大文字、i%2 == 1小文字です。 modulus operatorはあなたにここに長い道のりを取ることができる

public String altCase(String text) 
{ 
    String str = ""; 
    for (int i = 0; i < text.length(); i++) 
    { 
     char cA = text.charAt(i); 

     if (i%2 == 0) 
     { 
      str += Character.toUpperCase(cA); 
     } 
     else 
     { 
      str += Character.toLowerCase(cA); 
     } 
    } 
    return str; 
} 
1

...

StringBuilder rslt = new StringBuilder(); 
for (int i = 0; i < text.length(); i++) { 
    char c = text.charAt(i); 
    switch (i % 2) { 
     case 0: 
      rslt.append(Character.toUpperCase(c)); 
      break; 
     case 1: 
      rslt.append(Character.toLowerCase(c)); 
      break; 
    } 
} 
return rslt.toString(); 
0
私は text.toLowerCase()StringBuilder変更可能な文字列)で開始します

。その文字を偶数のインデックスに相当するものに設定します(メソッドはインスタンスの状態に依存しないので、static)。何かのように、

public static String altCase(String text) { 
    StringBuilder sb = new StringBuilder(text.toLowerCase()); 
    for (int i = 0; i < text.length(); i += 2) { 
     sb.setCharAt(i, Character.toUpperCase(sb.charAt(i))); 
    } 
    return sb.toString(); 
} 
関連する問題