如何替换数组中的字符串字符
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#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];
为什么要使用 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
问题是 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
根据其他人的建议,您还可以查看 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");
}
}
运行代码here
我正在尝试创建一个加密方案,用相应的字母替换 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#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];
为什么要使用 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
问题是 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
根据其他人的建议,您还可以查看 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");
}
}
运行代码here