私は年齢の古いCaesar Cipherを使ってテキストの文字列を暗号化するアンドロイドアプリを開発しています。void文法でswitch文を含むメソッドの使い方
具体的には、ユーザーは任意の長さの文字列をEditText Viewに入力し、テキストの文字列を暗号化するボタンを押します。ボタンを押すと、文字列を暗号化してTextViewに印刷する必要があります。ここで
は私のMainActivityクラスは、(それが不完全です)です:
public class CeasarCipher {
public char crypt (char alpha){
switch (alpha){
case 'A' : return 'D';
case 'a' : return 'd';
case 'B' : return 'E';
case 'b' : return 'e';
case 'C' : return 'F';
case 'c' : return 'f';
case 'D' : return 'G';
case 'd' : return 'g';
case 'E' : return 'H';
case 'e' : return 'h';
case 'F' : return 'I';
case 'f' : return 'i';
case 'G' : return 'J';
case 'g' : return 'j';
case 'H' : return 'K';
case 'h' : return 'k';
case 'I' : return 'L';
case 'i' : return 'l';
case 'J' : return 'M';
case 'j' : return 'm';
case 'K' : return 'N';
case 'k' : return 'n';
case 'L' : return 'O';
case 'l' : return 'o';
case 'M' : return 'P';
case 'm' : return 'p';
case 'N' : return 'Q';
case 'n' : return 'q';
case 'O' : return 'R';
case 'o' : return 'r';
case 'P' : return 'S';
case 'p' : return 's';
case 'Q' : return 'T';
case 'q' : return 't';
case 'R' : return 'U';
case 'r' : return 'u';
case 'S' : return 'V';
case 's' : return 'v';
case 'T' : return 'W';
case 't' : return 'w';
case 'U' : return 'X';
case 'u' : return 'x';
case 'V' : return 'Y';
case 'v' : return 'y';
case 'W' : return 'Z';
case 'w' : return 'z';
case 'X' : return 'A';
case 'x' : return 'a';
case 'Y' : return 'B';
case 'y' : return 'b';
case 'Z' : return 'C';
case 'z' : return 'c';
default: return alpha;
}
}
}
オクラホマので、シーザー暗号クラスの仕事は、文字列をスキャンすることである。
public class MainActivity extends AppCompatActivity {
EditText TextToMirror;
TextView TextOut;
Button Mirrorbtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextToMirror = (EditText) findViewById(R.id.TextToMirror);
TextOut = (TextView) findViewById(R.id.TextOut);
Mirrorbtn = (Button) findViewById(R.id.Mirrorbtn);
Mirrorbtn.setOnClickListener(new View.OnClickListener() {
/**The onClick method should get text from the edittext view,
* crypt that text using the crypt method from the ceasar chiper method and then
* print on the textview**/
@Override
public void onClick(View v) {
TextOut.setText(TextToMirror.getText());
}
});
}
//Trying to access the crypt method from the ceasar chiper class
public void cryptxt(){
CeasarCipher lock = new CeasarCipher();
lock.crypt();
}
}
ここ
はシーザー暗号クラスですアプリケーションのEditTextビューにテキストを入力し、その文字列を暗号化します。 crypt (char alpha)
メソッドは、ボタンによってEditText View
に入力された文字列を暗号化するために使用されるメソッドです。したがってMainActivity
クラスのメソッドは、MainActivity
内にCaesarCipher
オブジェクトを作成することによって(上記の主なアクティビティコードを参照してください)使用されます。このオブジェクトにより、crypt
メソッドにアクセスできます。
このように、ここ数週間私を悩ませていた問題は、このcrypt
メソッドです。 switch()
ステートメントを使用しているので、MainActivity
内のcrypttext
メソッド内のメソッドを呼び出すことはできません。これは、crypttext
メソッドがvoidメソッドであり、crypt
メソッドに値を返すswitch文が含まれているためです。私は非常によく知っています。voidは返り値を意味しません!
あなたに私の質問はすべてです:どのように私は妥当な方法の中で値を返す必要がありますか? void
をpublic void cryptxt()
から削除しようとしましたが、アンドロイドスタジオは「メソッド名が無効です」と「戻り値の型が必要です」と伝え続けました。
助けてください!
どこからでもメソッドを呼び出すことができます。そこから呼び出すメソッドの戻り値の型は違いはありません。 – SLaks
の代わりに 'public cryptxt(){}'のようにメソッドシグネチャから 'void'を削除する代わりに、' public char cryptxt(){} ' – Lino
@Lino Okに置き換えてください。私はそれを試してみる。 – AugieJavax98