Java 更改输入以便in可以接受任意长度的字符串,这会导致输出出现问题
目前,我有一个方法,要求用户输入字符串,但只输出前16个字符!该方法假定接收任意长度的字符串,然后在执行以下操作后输出4x4块中的字符:第一行保持不变。将第二排位置向左移动一个位置,然后将第三排位置向左移动两个位置。最后,将第四排的三个位置向左移动。到目前为止,它将只输出第一个4x4块 此外,我不确定如何更改该方法,使其不需要用户输入 我希望它使用如下给定字符串: String text=shiftRows(“wvogjtxqhuhxicwyymghtrkqhqpwkyvglpyspwgofopmo”) “WVOGJTXQHUHXICWYMghtRKQHQPWKYVGLPYSPWGOINTOPMO”是我想要使用的给定加密字符串。但不要求用户输入..我不断得到错误和不正确的输出..请说明我可以如何修复此问题 我使用的代码:Java 更改输入以便in可以接受任意长度的字符串,这会导致输出出现问题,java,methods,Java,Methods,目前,我有一个方法,要求用户输入字符串,但只输出前16个字符!该方法假定接收任意长度的字符串,然后在执行以下操作后输出4x4块中的字符:第一行保持不变。将第二排位置向左移动一个位置,然后将第三排位置向左移动两个位置。最后,将第四排的三个位置向左移动。到目前为止,它将只输出第一个4x4块 此外,我不确定如何更改该方法,使其不需要用户输入 我希望它使用如下给定字符串: String text=shiftRows(“wvogjtxqhuhxicwyymghtrkqhqpwkyvglpyspwgofop
public class shiftRows {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String[] input= new String[4];
String[] output= new String[4];
System.out.println("Enter a String");
String inputStr = sc.next();
for (int i = 0, n = 0; i < 4; i++, n+=4) {
input[i] = inputStr.substring(0+n, 4+n);
}
// -
output[0] = input[0];
for(int i=1; i<4; i++)
{
output[i] = Shift(input[i],i);
}
for(int i=0; i<4; i++)
{
System.out.println(output[i]);
}
}
public static String Shift(String str, int shiftNum)
{
char[] out = new char[4];
if(shiftNum==1)
{
out[0]=str.charAt(1);
out[1]=str.charAt(2);
out[2]=str.charAt(3);
out[3]=str.charAt(0);
}
if(shiftNum==2)
{
out[0]=str.charAt(2);
out[1]=str.charAt(3);
out[2]=str.charAt(0);
out[3]=str.charAt(1);
}
if(shiftNum==3)
{
out[0]=str.charAt(3);
out[1]=str.charAt(0);
out[2]=str.charAt(1);
out[3]=str.charAt(2);
}
return new String(out);
}
}
公共类shiftRows{
公共静态void main(字符串[]args)
{
扫描仪sc=新的扫描仪(System.in);
字符串[]输入=新字符串[4];
字符串[]输出=新字符串[4];
System.out.println(“输入字符串”);
字符串inputStr=sc.next();
对于(int i=0,n=0;i<4;i++,n+=4){
input[i]=inputStr.substring(0+n,4+n);
}
// -
输出[0]=输入[0];
对于(inti=1;i,这里有一个很好的方法:
import java.util.Scanner;
public class shiftRows {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String inputStr = "WVOGJTXQHUHXICWYYMGHTRKQHQPWKYVGLPYSPWGOINTOFOPMO";
for (int i = 0 ; i < inputStr.length() ; i++){
System.out.print(inputStr.charAt(i));
if ((i + 1)%4 == 0) System.out.println();
}
}
}
import java.util.Scanner;
公共类移位{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
字符串inputStr=“wvogjtxqhuhxicwyymghtrkqhqpwkyvglpyspwgofopmo”;
对于(int i=0;i
如果您想将其存储到字符串中
,只需在每个循环处串联,并在每次If测试有效时添加一个“\n”
。向左移动是什么意思?您想要这种类型的输出测试吗。