2015-09-19 29 views
0

目前我有一个类,移动给定的字符串的输入,以打印输出。该程序工作正常,并具有正确的输出,但我不知道如何解决主要问题,只需要问一个字符串,而不是四个单独的字符串。请出示你将如何解决这个问题把输入作为一个字符串,帮助修复主要,所以它只需要一个输入

输出示例:WVOGJTXQHUHXICWYYMGHTRKQHQPWKYVGLPYSPWGOINTOFOPMO

我唯一的问题是如何主要用于四个独立的输入要求,我会把它想只要求一个字符串,请说明如何

public class shiftRows { 

     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); 
     } 
     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 4 String's :"); 
      for(int i=0;i<4;i++) 
      { 
       input[i]=sc.next(); 
      } 
      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]); 


      } 

     } 

} 
+0

是否允许更改代码的其他部分?如果删除数组,代码的所有部分也必须更改。 – user3437460

+0

我的意思是如果有人知道更好的解决方法。这部分代码这一步与AES加密中的ShiftRows步骤相同。 它按照以下方式循环移动每个块中的行。第一行保持不变。将第二行向左移动一个位置。将第三排两个位置向左移。最后,将第四行 三个位置向左移。 –

+0

请发表您现在给出的输入示例,并输入您想要给予的内容,以实现相同的输出。 – Cinnam

回答

0

提供相同的输出,并使用单个连续字符串的输入。

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

} 
相关问题