0

私はそのようなプログラムを持っています:

import java.util.Scanner; import java.io.*;

class C { public static void main (String[] args) throws IOException{

    System.out.println("Wpisz teks do zakodowania: ");

    String tekst;
        Scanner odczyt = new Scanner(System.in);
        tekst = odczyt.nextLine();
        System.out.println("Tekst odszyfrowany:" + tekst);
        char[]alfabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
        int dlugalf=26;
        System.out.print("Tekst zaszyfrowany:");

        int a = 0;

        for(int i=0;;){

            System.out.print(tekst.charAt(a));
            a++;

        }
    }   
}

起動後、質問を表示し、テキストを入力するように求めます。次に、私が書いた記号が表示され、プログラムは文字列全体としてではなく、これらの文字を個別にロードする必要があります。しかし、それはエラーをポップアップ表示します:

Exception in thread "main" java.lang.StringIndexOut OfBoundsException: String index out of range: 10
at java.lang.String.charAt(Unknown Source)
at C.main(C.java:34)

空の文字列が原因です。どうすればそれを取り除くことができますか? 私はこのコマンドで試しました:

if (!tekst.isEmpty() && tekst.charAt(0) == 'R');

しかし、うまくいきませんでした。

間違いがありましたら申し訳ありません。私は英語があまりうまく話せません。

4

2 に答える 2

2

このコード ブロック:

int a=0;
for(int i=0;;){

  System.out.print(tekst.charAt(a));
  a++;
}

なるはず

for(int a=0;a<tekst.length();a++){
     System.out.print(tekst.charAt(a));
}

そのままでは、あなたのループは永遠に行こうとします。String 内の文字が不足すると ( の場合a=tekst.length())、例外が発生します。

于 2016-03-28T19:21:47.500 に答える
0

定数シフトでテキスト復号化を実装したいようです。

あなたのコードにはいくつかの問題があります:

  1. 大文字と非文字は考慮されません
  2. ループ文が間違っています
  3. 復号化はありません

ここに例があります

final int shift = 1;//any shift here
final int alhpabetLength = 'z' - 'a';
String input = scanner.nextLine();
input = input.toLowerCase();
for (char c : input.toCharArray()) {
    if (c >= 'a' && c <= 'z') {
        int position = c - 'a';
        int decryptedPosition = (position + shift + alhpabetLength) % alhpabetLength;
        char decryptedC = (char)(decryptedPosition + 'a');
        System.out.print(decryptedC);
    } else {
        System.out.print(c);
    }
}

shift = -1暗号化された回線よりも使用すると、次の"ifmmp!"ようになります"hello!"

于 2016-03-28T19:50:38.090 に答える