假设我有 ABab
,我想将 A
替换为 ACac
,将 a
替换为 CAca....
。我尝试的输出给了我 ACCAcacBCacab
当它应该是 ACacBCacab
我不确定如何绕过这个因为你可以看到它也改变了小写字母 a输入 Acac
。我希望能够将这些一直输入到 Z
,如您所见 haha
,这是我的代码:
import java.util.*;
public class Nails
{
public static void main(String[] args)
{
Scanner i = new Scanner(System.in);
String[][] comms = { { "ACac", "CAca" }, { "ADad", "DAda" }, { "AEae", "EAea" }, { "AFaf", "FAfa" },
{ "AGag", "GAga" }, { "AHah", "HAha" }, { "AIai", "Iaia" }, { "AJaj", "JAja" }, { "AKak", "KAka" },
{ "ALal", "LAla" }, { "AMam", "MAma" }, { "ANan", "NAna" }, { "AOao", "OAoa" }, { "APap", "PApa" },
{ "AQaq", "QAqa" }, { "ARar", "RAra" }, { "ASas", "SAsa" }, { "ATat", "TAta" }, { "AUau", "UAua" },
{ "AVav", "VAva" }, { "AWaw", "WAwa" }, { "AXax", "XAxa" }, { "AYay", "YAya" }, { "AZaz", "ZAza" } };
String Master = "ABab";
String S = Master; //Slave String
String Tmp = S;
System.out.println("Amount of Nails: ");
int N = i.nextInt(); //Nails
if(N < 2)
{
System.out.println("Sorry, You Must input a number Greater than or Equal to 2");
}
if(N == 2)
{
System.out.println(Master);
}
else
{
for(int c = 0; c < N - 2; c++) //C for Counter, subtracting 2 because method wont run if it is <= 2 and 'Comms' starts on 0 which would be 3 Nails
{
System.out.println(S);
S = S.replace("A", Comms[c][0]);
S = S.replace("a", Comms[c][1]);
System.out.println(S);
}
}
}
}
小写字母代表大写字母的组合,这就是为什么每添加 1 个“Nail”就有 2 个条目。我正在制作这个程序,以便能够为这个谜题创建一个公式生成器: Nail Puzzle .如果有帮助,视频创作者还会解释一些数学原理。 谢谢。
最佳答案
您可以使用占位符。将字符替换为占位符,将占位符替换为实际的字符串。
import java.util.*;
public class Q47028607 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[][] comms = { { "ACac", "CAca" }, { "ADad", "DAda" }, { "AEae", "EAea" }, { "AFaf", "FAfa" },
{ "AGag", "GAga" }, { "AHah", "HAha" }, { "AIai", "Iaia" }, { "AJaj", "JAja" }, { "AKak", "KAka" },
{ "ALal", "LAla" }, { "AMam", "MAma" }, { "ANan", "NAna" }, { "AOao", "OAoa" }, { "APap", "PApa" },
{ "AQaq", "QAqa" }, { "ARar", "RAra" }, { "ASas", "SAsa" }, { "ATat", "TAta" }, { "AUau", "UAua" },
{ "AVav", "VAva" }, { "AWaw", "WAwa" }, { "AXax", "XAxa" }, { "AYay", "YAya" }, { "AZaz", "ZAza" } };
String master = "ABab";
System.out.println("Amount of Nails: ");
int N = scanner.nextInt();
if (N < 2) {
System.out.println("Sorry, You Must input a number Greater than or Equal to 2");
} else if (N == 2) {
System.out.println(master);
} else {
for (int c = 0; c < N - 2; c++) {
System.out.println(master);
master = master.replace("A", "$1");
master = master.replace("a", "$2");
master = master.replace("$1", comms[c][0]);
master = master.replace("$2", comms[c][1]);
System.out.println(master);
}
}
scanner.close();
}
}
关于java - 有没有一种方法可以将 2 个字符串输入 1 个字符串并且不影响彼此的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47028607/