簡體   English   中英

更改輸入以便輸入可以采用任何長度的字符串,輸出問題

[英]Changing input so in can take any length of string, problems with output

目前我有一種方法要求用戶輸入字符串但只輸出前 16 個字符! 該方法應該接受任何長度的字符串,然后在執行以下操作后以 4x4 塊的形式輸出字符:第一行保持不變。 將第二行向左移動一個位置,然后將第三行向左移動兩個位置。 最后,將第四行向左移動三個位置。 截至目前,它只會輸出第一個 4x4 塊

此外,我不確定如何更改該方法,因此它不會要求用戶輸入我希望它使用給定的字符串,例如:

String text = shiftRows("WVOGJTXQHUHXICWYYMGHTRKQHQPWKYVGLPYSPWGOINTOFOPMO");

“WVOGJTXQHUHXICWYYMGHTRKQHQPWKYVGLPYSPWGOINTOFOPMO”是我想使用的給定加密字符串。 但不要求用戶輸入..我不斷收到錯誤和不正確的輸出..請展示我如何解決這個問題

我正在使用的代碼:

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

這是一個很好的方法:

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

如果你想把它存入一個String ,只需在每個循環中連接並在每次 if 測試有效時添加一個"\\n"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM