2016-07-22 34 views
0

我試圖用java實現一個簡單的凱撒轉變:輸出逆轉

import java.util.Scanner; 

public class Caesar_shift { 
public static String message; 
public static String Shift_msg; 

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    System.out.print("Please type message: "); 
    message = scanner.next(); 
    setShift_msg(message); 
    System.out.println(Shift_msg); 
} 


public static String setShift_msg(String msg) { 
    String valueOf; 
    for (int i = 0, n = msg.length(); i < n; i++) { 
     char c = msg.charAt(i); 
     c = (char) (c + 1); 
     valueOf = String.valueOf(c); 
     Shift_msg = valueOf += Shift_msg; 
    } 
    return Shift_msg; 
} 

}

當我運行我的程序,

String message = "abc"

我應該得到輸出bcd。但是,它返回「dcbnull」。

我該如何解決這個問題,爲什麼會發生這種情況?

回答

0

將行Shift_msg = valueOf += Shift_msg;更改爲Shift_msg += valueOf; 這解釋了爲什麼它被顛倒過來。並且最後擺脫null,在方法的開頭或者在字符串聲明時設置Shift_msg = "";

0

這裏是你的代碼更正

你犯了錯誤的串接錯誤。

它應該是Shift_msg += valueOf,因爲您從頭到尾也會使用原始消息。

你得到的原因null是因爲Shift_msg沒有開頭的值,所以它應該是一個空的String

public static String message; 
public static String Shift_msg = ""; 

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    System.out.print("Please type message: "); 
    message = scanner.next(); 
    setShift_msg(message); 
    System.out.println(Shift_msg); 
} 


public static String setShift_msg(String msg) { 
    String valueOf; 
    for (int i = 0, n = msg.length(); i < n; i++) { 
     char c = msg.charAt(i); 
     c = (char) (c + 1); 
     valueOf = String.valueOf(c); 
     Shift_msg += valueOf; 
    } 
    return Shift_msg; 
}