Caesar cipher in Android studio not showing in TextView

Viewed 28

The user enters a word and you need to encrypt it with a Caesar cipher. That's what EditText is for. From here you need to take the word that the user enters and when you click on the Button, you need to display the encrypted word in the TextView.

But when it comes to output textOut1.setText(symbol_right_shift(word.charAt(j), i)); application crashes. I think the problem is that the TextView does not fit all possible cipher options. But I kind of made the TextView scrollable. Perhaps you have other ideas for implementing the cipher?

XML Code:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

   
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="60dp"
        android:paddingTop="150dp"
        android:text="Введіть слово для шифрування"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Слово" />

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Зашифрувати"
        android:onClick="Encryption"/>

    <TextView
        android:id="@+id/textOut1"
        android:layout_width="match_parent"
        android:layout_height="579dp"
        android:maxLines="5000"
        android:scrollbars="vertical"
        android:text="Зашифроване слово"
        android:textSize="20sp" />


</LinearLayout>

Main.java code

package com.example.lab5mob;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.Locale;
import java.util.Scanner;

public class MainActivity extends AppCompatActivity {

EditText editText1;
Button button1;
TextView textOut1;
    static final String alphabet = "abcdefghijklmnopqrstuvwxyz";

    //абвгґдеєжзиіїйклмнопрстуфхцчшщьюя
    public static char symbol_right_shift(char symbol, int shift){

       if (alphabet.indexOf(symbol) != -1){
        return alphabet.charAt((alphabet.indexOf(symbol) + shift) % alphabet.length());

       }
       else{
           return symbol;
       }

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText1 = (EditText) findViewById(R.id.editText1);
        button1 = (Button) findViewById(R.id.button1);
        textOut1 = (TextView) findViewById(R.id.textOut1);
        textOut1.setMovementMethod(new ScrollingMovementMethod());
    }


    public void Encryption(View view) {
        String word = editText1.getText().toString(); //read value from EditText
        word = word.toLowerCase();

         for(int i=0; i <= 26; ++i) {
         for (int j=0; j<word.length(); j++){
             textOut1.setText(symbol_right_shift(word.charAt(j), i));//display this text in a TextView
         }
          textOut1.setText("\n");
        }
    }
}

And here is a logs

2022-09-20 17:31:54.814 17574-17574/com.example.lab5mob E/example.lab5mo: Invalid ID 0x0000043b.
2022-09-20 17:31:54.815 17574-17574/com.example.lab5mob D/AndroidRuntime: Shutting down VM
2022-09-20 17:31:54.818 17574-17574/com.example.lab5mob E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.lab5mob, PID: 17574
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$Decla redOnClickListener.onClick(AppCompatViewInflater.j ava:446)
at android.view.View.performClick(View.java:7448)
at com.google.android.material.button.MaterialButton. performClick(MaterialButton.java:1194)
at android.view.View.performClickInternal(View.java:7 425)
at android.view.View.access$3600(View.java:810)
at android.view.View$PerformClick.run(View.java:28305 )
at android.os.Handler.handleCallback(Handler.java:938 )
at android.os.Handler.dispatchMessage(Handler.java:99 )
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.jav a:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsC aller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:947)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$Decla redOnClickListener.onClick(AppCompatViewInflater.j ava:441)
at android.view.View.performClick(View.java:7448) 
at com.google.android.material.button.MaterialButton. performClick(MaterialButton.java:1194) 
at android.view.View.performClickInternal(View.java:7 425) 
at android.view.View.access$3600(View.java:810) 
at android.view.View$PerformClick.run(View.java:28305 ) 
at android.os.Handler.handleCallback(Handler.java:938 ) 
at android.os.Handler.dispatchMessage(Handler.java:99 ) 
at android.os.Looper.loop(Looper.java:223) 
at android.app.ActivityThread.main(ActivityThread.jav a:7656) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsC aller.run(RuntimeInit.java:592) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:947) 
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x43b
at android.content.res.Resources.getText(Resources.ja va:444)
at android.widget.TextView.setText(TextView.java:6412 )
at com.example.lab5mob.MainActivity.Encryption(MainAc tivity.java:53)
at java.lang.reflect.Method.invoke(Native Method) 
at androidx.appcompat.app.AppCompatViewInflater$Decla redOnClickListener.onClick(AppCompatViewInflater.j ava:441) 
at android.view.View.performClick(View.java:7448) 
at com.google.android.material.button.MaterialButton. performClick(MaterialButton.java:1194) 
at android.view.View.performClickInternal(View.java:7 425) 
at android.view.View.access$3600(View.java:810) 
at android.view.View$PerformClick.run(View.java:28305 ) 
at android.os.Handler.handleCallback(Handler.java:938 ) 
at android.os.Handler.dispatchMessage(Handler.java:99 ) 
at android.os.Looper.loop(Looper.java:223) 
at android.app.ActivityThread.main(ActivityThread.jav a:7656) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsC aller.run(RuntimeInit.java:592) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:947) 
2022-09-20 17:31:54.870 17574-17574/com.example.lab5mob I/Process: Sending signal. PID: 17574 SIG: 9
0 Answers
Related