演算子<はjava.lang.String、charには適用できません

ザックH。

これを邪魔にならないようにしましょう。私はJavaの初心者です。コードの一部に問題があります。

public class Cipher { 

private int secretKey;
private int superSecretKey;

/**
 *
 * @param key the variable used to shift the number of letter
 */
public Cipher(int key) { 
    secretKey = key;
    superSecretKey = key;
}

/**
 *
 * @param s the string to be encrypted
 * @return encrypted string
 */
public String caesarEncrypt (String s) {
    String r = "";

    for(int i = 0; i < s.length(); i++) {

        char c = (char) (s.charAt(i));
        if(Character.isLetter(c)) {
            if (Character.isUpperCase(c)) { 
                r += (char) ('A' + (c - 'A' + secretKey) % 26);
            }
            else {
                r += (char) ('a' + (c - 'a' + secretKey) % 26);
            }
        }
            else {
            r += c;
        }
    }
    return r;
}

/**
 *
 * @param s the string to be decrypted
 * @return the decrypted string
 */
public String caesarDecrypt (String s) {
    String r = "";

    for(int i = 0; i < s.length(); i++) {

        char c = (char) (s.charAt(i));
        if(Character.isLetter(c)) {
            if (Character.isUpperCase(c)) {
                int tmp = (char) ('A' + (c - 'A' - secretKey) % 26);
                if (tmp < 'A') r +=26;
            r += (char) (tmp);
            }
            else {
                int tmp = (char) ('a' + (c - 'a' - secretKey) % 26);
                if (tmp < 'A') r +=26;
            r += (char) (tmp);
            }
        }
            else {
            r += c;
        }
    }
    return r;
}

/**
 *
 * @param s the string to be encrypted using the augustus encryption
 * @return the encrypted string
 */
public String augustusEncrypt (String s) {
      String tmp = caesarEncrypt(s);
      String r = "";
      String newStringKey = Integer.toString(superSecretKey);
      int index = 0;

     for (int i = 0; i < s.length(); i++) {

         char c = (char) (s.charAt(i));
         if(Character.isLetter(c)) {
             char augKey = newStringKey.charAt(index++ % newStringKey.length());  
             if (Character.isUpperCase(c)) {
                 r += (char)('A' - (c - 'A' + Character.getNumericValue (augKey)) % 26);
             }
             else {
                 r += (char)('a' - (c - 'a' + Character.getNumericValue (augKey)) % 26);
         }      
     }
         else {
         r += c;
     }        
 }
 return r;
}

/**
 *
 * @param s the string to be decrypted using the augustus decryption
 * @return the decrypted string
 */
public String augustusDecrypt (String s) {
     String dec = caesarDecrypt(s);
     String r = "";
     String newStringKey = Integer.toString(superSecretKey);
     int index = 0;

 for (int i = 0; i < s.length(); i++) {

     char c = (char) (s.charAt(i));
         if(Character.isLetter(c)) {
             char augKey = newStringKey.charAt(index++ % newStringKey.length());  
             if (Character.isUpperCase(c)) {
                 r += (char)('A' - (c - 'A' - Character.getNumericValue (augKey)) % 26);
                 if (dec < 'A') r +=26;
            r += (char) (dec);
             }
             else {
                 r += (char)('a' - (c - 'a' - Character.getNumericValue (augKey)) % 26);
                 if (dec < 'A') r +=26;
            r += (char) (dec);
         }      
     }
         else {
         r += c;
     }        
 }
 return aug;
}



}

上記はコード全体です。修正が必要な私の1つの部分には、他の部分が必要だからです。この次のコードは、私が問題を抱えているメソッドです。

public String augustusDecrypt (String s) {
     String dec = caesarDecrypt(s);
     String r = "";
     String newStringKey = Integer.toString(superSecretKey);
     int index = 0;

 for (int i = 0; i < s.length(); i++) {

     char c = (char) (s.charAt(i));
         if(Character.isLetter(c)) {
             char augKey = newStringKey.charAt(index++ % newStringKey.length());  
             if (Character.isUpperCase(c)) {
                 r += (char)('A' - (c - 'A' - Character.getNumericValue (augKey)) % 26);
                 if (dec < 'A') r +=26;
            r += (char) (dec);
             }
             else {
                 r += (char)('a' - (c - 'a' - Character.getNumericValue (augKey)) % 26);
                 if (dec < 'A') r +=26;
            r += (char) (dec);
         }      
     }
         else {
         r += c;
     }        
 }
 return aug;
}

forループで、演算子エラーが発生します。このコード行は正確に。

if (dec < 'A') r +=26;

誰かが私が間違っていることを教えてもらえますか?

redbirdo

文字列(dec)が文字( 'A')よりも小さいかどうかを判断しようとしていますが、これは意味がありません。あなたのコードが何をしようとしているのか私にはわかりません。おそらくあなたがやろうとしていたことは:

if (dec.charAt(i) < 'A') r +=26;

いずれの場合も、最初のオペランドは文字タイプである必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

演算子「<」は「java.lang.String」には適用できません

分類Dev

演算子==はjava.lang.Stringcharには適用できません

分類Dev

演算子==はjava.lang.Stringcharには適用できません

分類Dev

演算子「+」は「int」、「java.lang.Object」には適用できません

分類Dev

このエラーが発生しました「演算子+をjava.lang.string voidに適用できません」

分類Dev

"演算子 '=='はタイプ 'char'および 'string'のオペランドには適用できません"

分類Dev

演算子 '==' は、string 型および char 型のオペランドには適用できません

分類Dev

演算子 '=='は、knockoutObservable <string>およびstring型には適用できません。

分類Dev

演算子「==」は「double []」、「double」には適用できません

分類Dev

演算子「&」はbyte、int、booleanには適用できません

分類Dev

算術演算子はIntStreamに適用できません

分類Dev

演算子|| intとboolには適用できません

分類Dev

Gradle、「url」は(java.lang.String)に適用できません

分類Dev

(java.lang.String)は(java.lang.Object)に適用できません

分類Dev

二項演算子 '〜='は、タイプ 'String'および 'String?'のオペランドには適用できません。

分類Dev

演算子<=は、string型およびstring型のオペランドには適用できません。

分類Dev

二項演算子 '>'は、タイプ '(String?)'および 'String?'のオペランドには適用できません。

分類Dev

演算子「-」は、string型およびstring型のオペランドには適用できません。

分類Dev

演算子==は、Kotlinの「Long」および「Int」には適用できません

分類Dev

演算子==は、Kotlinの「Long」および「Int」には適用できません

分類Dev

演算子==は、Kotlinの「Long」および「Int」には適用できません

分類Dev

演算子はフロート「android.widget.EditText」には適用できません

分類Dev

演算子 '=='は 'ブール値'および '文字'には適用できません

分類Dev

二項演算子 '!=='は2つの 'MyProtocol'には適用できません

分類Dev

演算子「+」はint、「com.fasterxml.jackson.core.io.SerializedString」には適用できません

分類Dev

演算子<はタイプNumberおよびbooleanには適用できません

分類Dev

二項演算子 '!='は2つのListNodeswiftには適用できません

分類Dev

BasicNameValuePairのBasicNameValuePair(String、java.lang.String)は適用できません

分類Dev

C#ERROR演算子*タイプ「string」および「string」のオペランドには適用できません

Related 関連記事

  1. 1

    演算子「<」は「java.lang.String」には適用できません

  2. 2

    演算子==はjava.lang.Stringcharには適用できません

  3. 3

    演算子==はjava.lang.Stringcharには適用できません

  4. 4

    演算子「+」は「int」、「java.lang.Object」には適用できません

  5. 5

    このエラーが発生しました「演算子+をjava.lang.string voidに適用できません」

  6. 6

    "演算子 '=='はタイプ 'char'および 'string'のオペランドには適用できません"

  7. 7

    演算子 '==' は、string 型および char 型のオペランドには適用できません

  8. 8

    演算子 '=='は、knockoutObservable <string>およびstring型には適用できません。

  9. 9

    演算子「==」は「double []」、「double」には適用できません

  10. 10

    演算子「&」はbyte、int、booleanには適用できません

  11. 11

    算術演算子はIntStreamに適用できません

  12. 12

    演算子|| intとboolには適用できません

  13. 13

    Gradle、「url」は(java.lang.String)に適用できません

  14. 14

    (java.lang.String)は(java.lang.Object)に適用できません

  15. 15

    二項演算子 '〜='は、タイプ 'String'および 'String?'のオペランドには適用できません。

  16. 16

    演算子<=は、string型およびstring型のオペランドには適用できません。

  17. 17

    二項演算子 '>'は、タイプ '(String?)'および 'String?'のオペランドには適用できません。

  18. 18

    演算子「-」は、string型およびstring型のオペランドには適用できません。

  19. 19

    演算子==は、Kotlinの「Long」および「Int」には適用できません

  20. 20

    演算子==は、Kotlinの「Long」および「Int」には適用できません

  21. 21

    演算子==は、Kotlinの「Long」および「Int」には適用できません

  22. 22

    演算子はフロート「android.widget.EditText」には適用できません

  23. 23

    演算子 '=='は 'ブール値'および '文字'には適用できません

  24. 24

    二項演算子 '!=='は2つの 'MyProtocol'には適用できません

  25. 25

    演算子「+」はint、「com.fasterxml.jackson.core.io.SerializedString」には適用できません

  26. 26

    演算子<はタイプNumberおよびbooleanには適用できません

  27. 27

    二項演算子 '!='は2つのListNodeswiftには適用できません

  28. 28

    BasicNameValuePairのBasicNameValuePair(String、java.lang.String)は適用できません

  29. 29

    C#ERROR演算子*タイプ「string」および「string」のオペランドには適用できません

ホットタグ

アーカイブ