gpt4 book ai didi

java - 在数组中的特定点添加字符

转载 作者:行者123 更新时间:2023-12-01 19:57:50 24 4
gpt4 key购买 nike

我正在研究凯撒密码,并且我已经让大部分代码按计划工作。代码应该是

  1. 删除所有特殊字符和空格
  2. 将所有内容变为大写
  3. 按输入的间隔添加空格,任何其他剩余空格均带有 x

例如,如果我要输入
明文:嗨,我是道格
key :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;
}

这是我认为特别有问题的部分

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

如果我输入这个这个

Hi Im Doug

我明白

 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++] = ' ';
}
}

关于java - 在数组中的特定点添加字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59025369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com