对于我的计算机科学课,我必须创建一个接受两个或三个命令行参数的Caesar Cypher,第一个是键,即消息中每个字母将被移动的量,第二个是包含原始参数的文件。消息,第三个是可选的,如果存在,它将创建带有加密代码的指定文件,如果不存在,则输出显示在屏幕上。一切正常,除了删除空格,例如,如果我输入5且消息“ Hello,我的名字叫戴夫。”,它会显示“ Mjqqt1r〜sfrjnxIf {j3”,如果我输入-5和“ Mjqqt1r〜sfrjnxIf {j3”,它显示“ Hello,mynameisDave”。如何使它不删除空格?

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()in.next()基本上会寻找下一个单词,并一次给您一个单词。这就是为什么空间消失的原因。

07-24 09:45
查看更多