簡體   English   中英

如何替換數組中的字符串字符

[英]How to replace string characters from an array

我正在嘗試創建一種加密方案,將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);
        }

    }
}

為什么要使用String[] IMO,您應該使用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));
}

運行程序:

輸入要加密的字符串名稱:bat
[n,k,t] nkt

您正在尋找String#replace(char oldChar,char newChar)

返回一個新字符串,該字符串是用newChar替換此字符串中所有出現的oldChar的結果。

您的代碼將必須循環預定的時間並將每個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];

是不正確的。 請看這里,以更多地練習數組。 本質上,公式為:

Type[] myArr = new Type[sizeOfArray];

問題是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 } } 

在這里運行代碼

正如其他人所建議的,您也可以查看String.replaceAll()

 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"); } } 

在這里運行代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM