有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何替换数组中的字符串

我正在尝试创建一个加密方案,用相应的字母替换String中的字母

例如,在字符串“apple”中,“a”替换为“k”,以此类推。每个字母都有一个固定的对应字母

我想获取用户输入并将其存储到数组中。 然后我想在数组中循环并找到String的每个索引。然后用相应的字母替换每个索引

这是我到目前为止编造的,但我无法让代码运行。我主要得到,error: incompatible types

我无法确定是否应该使用charAt方法并将变量类型更改为char

import java.util.*;

public class Encrypt {

    public static void main(String [] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the String Name to encrypt:");
        String inputString = input.nextLine();
        String[] str = new String[inputString];
        replaceString();
    }

    public static void replaceString() {

        for(int i = 0; i < str.length(); i++) {
            if(str.indexOf(i) == "a") {
                str.indexOf(i) = "k";
            } else if(str.indexOf(i) == "b") {
                str.indexOf(i) = "n";
            }
            //and so on A-Z...
            System.out.print(str);
        }

    }
}

共 (3) 个答案

  1. # 1 楼答案

    问题是String.indexOf()给出了第一次出现的索引。它不能代替绳子

    str.indexOf(i) = "k"; //won't replace anything here
    

    顺便说一句,代码中还有其他几个语法错误

    如果要使用循环,请尝试以下示例:

    import java.util.Scanner;
    class Ideone {
      public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the String Name to encrypt:");
        String str = input.nextLine();
        input.close();
        str = replaceString(str); // note, self assignment
        System.out.println(str);
      }
    
      public static String replaceString(String str) {
        char[] tmp = str.toCharArray();// get all into array
        for (int i = 0; tmp.length > i; i++) {
          if ('a' == tmp[i]) {
            tmp[i] = 'k';
          } else if ('b' == tmp[i]) {
            tmp[i] = 'n';
          }
        }
        return new String(tmp); //create new string with modified array
      }
    }

    运行代码here

    正如其他人所建议的,你也可以研究^{

    import java.util.Scanner;
    class Ideone {
      public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the String Name to encrypt:");
        String str = input.nextLine();
        input.close();
        str = replaceString(str);
        System.out.println(str);
      }
    
      public static String replaceString(String str) {
        return str.replaceAll("a", "k").replaceAll("b", "n");
      }
    }

    运行代码here

  2. # 2 楼答案

    你在找String#replace(char oldChar, char newChar)

    Returns a new string resulting from replacing all occurrences of oldChar in this string with newChar.

    代码必须循环预先确定的次数,并将每个String存储在数组中

    Scanner input = new Scanner(System.in);
    String[] str = new String[5];
    for (int i = 0; i < 5; i++){
        System.out.println("Enter the String Name to encrypt:");
        String inputString = input.nextLine();
        str[i] = inputString.replace('a', 'k');
    }
    for (String s : str){
        System.out.println("Encrypted word: " + s);
    }
    

    注释

    您以前声明数组的方式

    String[] str = new String[inputString];
    

    这是不正确的。看看here来更多地练习数组。基本上,公式是:

    Type[] myArr = new Type[sizeOfArray];
    
  3. # 3 楼答案

    为什么要使用String[]?在我看来,您应该使用char[],下面的代码将满足您的需求:

    public static void main(String[] args) throws IOException {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the String Name to encrypt:");
        String inputString = input.nextLine();
        char[] str = inputString.toCharArray();
        replaceString(str);
    }
    
    public static void replaceString(char[] str) {
        int length = str.length;
        for(int i = 0; i < length; i++) {
            if(str[i] == 'a') {
                str[i] = 'k';
            } else if(str[i] == 'b') {
                str[i] = 'n';
            }
        }
            System.out.println(Arrays.toString(str));
            System.out.println(String.valueOf(str));
    }
    

    运行程序:

    Enter the String Name to encrypt: bat
    [n, k, t] nkt