无法获取访问字符串中字符的方法



我正试图在Android Studio上制作一个凯撒密码应用程序。我已经准备好了XML文件和大多数其他代码,但无法继续超过代码中必须访问字符串中每个元素的点。我试过使用charAt()函数。

此外,我只想让数组中某个点的字符增加指定的数字,我这么说是因为我看到在"z"之后会出现像"|"这样的特殊字符,这对我来说很好。这是我的第一个应用程序,真的需要一些帮助。错误出现在第47行和第61行。

这是我的代码:


import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity
{
    EditText input;
    EditText output;
    EditText num;
    String inp;
    String out;
    int choice;
    Character c;
    Button enc, dec;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        input = (EditText) findViewById(R.id.input);
        output= (EditText) findViewById(R.id.output);
        num = (EditText) findViewById(R.id.num);
        enc = (Button) findViewById(R.id.enc);
        dec = (Button) findViewById(R.id.dec);
        enc.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                inp=input.getText().toString();
                choice= Integer.parseInt(num.getText().toString());
                for(int i=0;i<input.length();i++)
                {
                    inp.charAt(i)= (char) (inp.charAt(i)+choice);
                }
            }
        });
        dec.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v1)
            {
                inp=input.getText().toString();
                choice= Integer.parseInt(num.getText().toString());
                for(int i=0;i<input.length();i++)
                {
                    inp.charAt(i)= (char) (inp.charAt(i)-choice);
                }
            }
        });
    }
}

基于@corsiKa的回答,我建议如下。首先,将输入字符串转换为char[]:

char[] array = inp.toCharArray();

现在您可以迭代数组并修改其内容:

array[i] = array[i] + choice;

最后,您可以从该数组构建输出字符串:

output.setText(new String(array));

我相信你的第一个问题是:

inp.charAt(i)= (char) (inp.charAt(i)+choice);

您正试图为方法返回赋值。这在Java中是不可能的。

字符串在Java中是不可变的——如果你想替换字符串中的值,你必须构建一个新的字符串,并重新分配指向旧字符串的引用,以指向新字符串。

可能还有其他问题我没有机会讨论,但我相信这才是真正的问题。我不完全理解你想做什么,所以不幸的是,我不能为你应该使用什么提出建议。

相关内容

  • 没有找到相关文章

最新更新