Java 在数组中的特定点添加字符
我正在研究一个凯撒密码,我已经按照计划完成了大部分代码。 代码应该是Java 在数组中的特定点添加字符,java,Java,我正在研究一个凯撒密码,我已经按照计划完成了大部分代码。 代码应该是 删除所有特殊字符和空格 把所有东西都大写 以输入的间隔添加空格任何带有x的剩余空格 例如,如果我要打字 明文:嗨,我是道格 关键词:1 缓冲区:3 我的输出应该是 IJJ-NEP-VHX 现在我已经把所有的东西都准备好了,除了缓冲部分 这是我的全部代码 import java.util.Scanner; import java.lang.String; public class Main { public sta
明文:嗨,我是道格
关键词:1
缓冲区:3
我的输出应该是
IJJ-NEP-VHX
现在我已经把所有的东西都准备好了,除了缓冲部分
这是我的全部代码
import java.util.Scanner;
import java.lang.String;
public class Main {
public static void main(String[] args) {
System.out.print("Enter plaintext: ");
Scanner pTextInp = new Scanner(System.in);
String pText = pTextInp.nextLine();
System.out.print("Enter key value: ");
Scanner kInp = new Scanner(System.in);
int key = kInp.nextInt();
pText = normalizeText(pText);
pText = caesarify(pText, key);
System.out.print("Enter desired grouping number: ");
Scanner grpInp = new Scanner(System.in);
int grpInt = grpInp.nextInt();
pText = groupify(grpInt, pText);
System.out.println(pText);
}
// CONVERT STRING TO A CHAR ARRAY
public static char[] sArray(String s) {
int sLen = s.length();
char[] sChar = new char[sLen + 1];
for (int i = 0; i < sLen; i++){
sChar[i] = s.charAt(i);
}
return sChar;
}
public static String caesarify(String s, int k) {
int sLen = s.length();
char cText[] = sArray(s);
for (int i = 0; i < sLen; i++){
int j = cText[i] - 65;
int l = (((j + k) % 26) + 65);
cText[i] = (char) l;
}
s = new String(cText);
return s;
}
// normalizes text (removes all spaces and special characters)
public static String normalizeText(String s) {
int sLen = s.length();
char[] t1 = s.toCharArray();
for (int i = 0; i < sLen; i++ ){
if(t1[i] < 'A' || t1[i] > 'z' || (t1[i] > 'Z' && t1[i] < 'a')) {
t1[i] = ' ';
}
else{
t1[i] = s.charAt(i);
}
}
String t = new String(t1);
t = t.replaceAll(" ", "" );
t = t.toUpperCase();
return t;
}
public static String groupify(int i , String s){
int sLen = s.length();
char[] t = new char[sLen];
for (int j = 0; j < s.length(); j++){
t[j] = s.charAt(j);
if ( j % i == 0) {
t[j] = ' ';
sLen++;
}
}
s = new String(t);
return s;
}
我明白了
JJ EP H
作为输出
非常感谢当前您的代码
t[i]+='
正在将空格字符的值添加到数组中的值。那不是你想要的。相反,您希望在下一个位置存储空间。我还建议您为变量使用更好的名称-单字符变量通常只应用于索引
int pos = 0;
for (int j = 0; j < input.length(); j++)
result[pos++] = input.charAt(j);
if ( j % group == 0) {
result[pos++] = ' ';
}
}
int pos=0;
对于(int j=0;j
对于突出显示的代码,For循环后缺少花括号。尝试在for循环外定义j,并在for循环中将值0指定给j。如果您将新字符数组的大小存储在一个单独的变量中,这将是一个更好的做法,因为在代码中查找错误时更容易读取。请修复损坏的键盘。这个网站更像是维基百科,而不是聊天室。“现在我把所有东西都用上了,但缓冲区部分”有点含糊不清,不是吗?当你发布一个问题时,你需要提供一个清晰的问题陈述。缓冲区到底出了什么问题?当我尝试实现您的代码时,它给了我一个错误,字符串超出了界限。pos++应该增加数组的大小,但现在应该吗?
JJ EP H
int pos = 0;
for (int j = 0; j < input.length(); j++)
result[pos++] = input.charAt(j);
if ( j % group == 0) {
result[pos++] = ' ';
}
}