使用命令提示符交换字符

时间:2017-12-04 08:10:40

标签: java file command-line

尝试使用命令行参数编写一个名为SwapChars.java的程序,该参数允许交换任意两个字符。例如,如果程序被调用SwapChars然后在文件test.txt中交换所有'a'和'b',我们将输入

java SwapChars test.txt ab

我输入了以下代码,这些代码一直给我一个异常错误,我不知道我哪里出错......

import java.util.*;
import java.io.*;
public class SwapChars {

    public static void main(String[] args) throws IOException {
        String a = args[0]; //file name (test.txt entered into command line)
        FileReader fr = new FileReader(a);
        String b = args[1];//which characters to swap
        int t = fr.read();
        while(t!=-1)
        {
            if(t==b.charAt(0))
            {
                System.out.println(b.charAt(1));
            }
            else if(t==b.charAt(1))
            {
                System.out.println(b.charAt(0));
            }
            else
            {
                System.out.println((char)t);
            }
                    t=fr.read();
        }
        // TODO Auto-generated method stub

    }

}

异常错误如下:

Exception in thread "main" java.io.FileNotFoundException: test.txt (The system cannot find the file specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at SwapChars.main(SwapChars.java:7)

当我更改代码以删除对命令的需要时,我可以获得所需的输出,如下所示:

import java.util.*;
import java.io.*;
public class SwapCharsTest {

public static void main(String[] args) throws IOException{
    FileReader fr = new FileReader("test.txt");
    String swap = "ab";
    int t = fr.read();
    while(t!=-1)
    {
        if(t==swap.charAt(0))
        {
            System.out.print(swap.charAt(1));
        }
        else if(t==swap.charAt(1))
        {
            System.out.print(swap.charAt(0));
        }
        else
        {
            System.out.print((char)t);
        }
        t=fr.read();
    }
    // TODO Auto-generated method stub

}

}

1 个答案:

答案 0 :(得分:1)

异常是因为无法找到该文件。尝试使用完整路径引用该文件。

此外,找到文件后,您的程序将永远循环。打印输出很容易改进。进行以下两项更改:

        else
        {
            System.out.println((char) t);                      
        }
        t = fr.read();
    }

t = fr.read();为每个循环读取一个新的char,(char)转换整数,使其在屏幕上看起来更好)

如果您不想使用完整路径,则需要确定Java将在何处查找该文件。这将(很可能)显示放置文件的位置:

System.out.println(new File("dummy").getAbsolutePath());