對於我的計算機科學課,我不得不創建一個凱撒Cypher,需要兩個或三個命令行參數,第一個是一個關鍵是每個字母在信息將被移動的數量,第二個是包含原始消息的文件,第三個是可選的,如果存在,則它使用加密的代碼創建指定的文件,如果不存在,則將輸出打印到屏幕上。除了刪除空格之外,一切都可以正常工作,例如,如果我傳入5的密鑰並且傳遞消息「您好,我的名字是Dave」,它會打印出「Mjqqt1r〜sfrjnxIf {j3」,如果我傳入-5並且「Mjqqt1r〜sfrjnxIf {j3」,它打印出「Hello,mynameisDave」。我怎樣才能使它不會刪除空格?凱撒Cypher刪除空間
import java.io.*;
import java.util.*;
public class Caesar
{
public static void main(String[] args)
{
int key = Integer.parseInt(args[0]);
Scanner in = null;
PrintWriter out = null;
try
{
in = new Scanner(new File(args[1]));
if(args.length == 3)
{
out = new PrintWriter(args[2]);
}
while(in.hasNextLine())
{
char[] charVal = in.next().toCharArray();
for(int i = 0; i < charVal.length; i++)
{
if(charVal[i] < 32 || charVal[i] > 126)
{
charVal[i] = charVal[i];
}
else
{
charVal[i] = (char) (charVal[i] + key);
}
if(charVal[i] > 126)
{
charVal[i] = (char) (charVal[i] - 95);
}
else if(charVal[i] < 32)
{
charVal[i] = (char) (charVal[i] + 95);
}
}
if(out != null)
{
out.print(charVal);
}
else
{
System.out.print(charVal);
}
}
}
catch (FileNotFoundException e)
{
System.out.println("Error: File not found.");
e.printStackTrace();
}
finally
{
in.close();
if(out != null)
{
out.close();
}
}
}
}
只是把in.nextLine()而不是in.next()將解決您的問題 –