java - 更改字符串中的字符时遇到问题

标签 java string loops for-loop

所以问题是:要更改前面有 3 个字符的字符串的字符,假设字符串是“AB cd”,它将更改为:“DE fg”。我不擅长编程,但我已尽力而为:

import java.util.*;

public class encrypt{

    public static void main(String[] args){

        Scanner reader = new Scanner(System.in);
        System.out.println("Enter a message to encrypt: ");
        String message = reader.nextLine();

        List<Character> Lowercase = Arrays.asList('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');

        List<Character> Uppercase = Arrays.asList('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');

        for ( int i = 0; i < message.length(); i++ ) {  
            char c = message.charAt( i );

            if( c == ' '){
                continue;
            }
            else if (c != ' '){
                for ( int i = 0; i < Lowercase.size(); i++ ) {
                    char b = Lowercase.indexOf(i);

                    if(c == b){
                        message.charAt(i)=Lowercase.indexOf(i+3);
                    }
                }
            }

            for ( int i = 0; i < Uppercase.size(); i++ ) {
                char j = Uppercase.indexOf(i);

                if(c == j){
                    message.charAt(i)=Uppercase.indexOf(i+3);
                }
            }
        }
    }               
}

我一直收到类似这样的错误:

Problem1.java:20: error: variable i is already defined in method main(String[]) for ( int i = 0; i < Lowercase.size(); i++ ) { ^ Problem1.java:21: error: possible loss of precision char b = Lowercase.indexOf(i); ^ required: char found: int Problem1.java:23: error: unexpected type message.charAt(i)=Lowercase.indexOf(i+3); ^ required: variable found: value Problem1.java:27: error: variable i is already defined in method main(String[])

如有任何帮助,我们将不胜感激 :) 谢谢。

最佳答案

除了此处随 dmcqu314 的回答提供的有用链接外,还有一些关于您的代码和发生的错误的想法。

第20行错误

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

正如@Jama Jurayevich 所说,对于内部循环,您真的应该使用除“i”之外的另一个变量。例如使用'k'。这会有所帮助 - 由于其他错误,帮助不大。

第21行错误

char b = Lowercase.indexOf(i);

Lowercase.indexOf(i) 将检索一个(有符号的)int 类型。将其分配给 char 类型 (char b) 会引发类型转换为类似于 unsigned int(即 char)的类型 - 因此暗示“可能会丢失精度”。

第23行错误

message.charAt(i)=Lowercase.indexOf(i+3);

在这里,您试图将一个 int 值分配给字符串方法。那根本不可能。字符串是 Java 中的最终对象。并且没有办法将某些东西分配给方法。如果你想追加一个字符到字符串,你可以这样做(例子):

String newString = new String();
...
newString = newString + 'a'

椭圆是您选择的其他编码。

希望这些提示能帮助您解决一些困惑。

关于java - 更改字符串中的字符时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25715535/

相关文章:

java - XML 解析器给出 null 元素

java - 类型不匹配 : cannot convert from Element to Elements & first cannot be resolved or is not a field

c++ - 如何从 C++ 中的 PWSTR 中提取子字符串

c++ - 使用 C++ 拆分字符串

list - 从列表中提取元素并将其设置为变量 (set_fact)

Java - 从文件中转义字符串中的双引号

Java Spring Boot 和 Thymeleaf : An error happened during template parsing

具有线性时间查找的字符串数组

c++ - 从另一个线程打破循环

javascript - 分配一个变量以及用另一个数组的项目迭代for循环