用java编写只接受某些字母的程序(异常处理)

用java编写只接受某些字母的程序(异常处理),java,exception-handling,Java,Exception Handling,我试图用Java创建一个程序,它可以写一行字符,但只写一些字符,在本例中是“a”或“b”。我该怎么做 现在它写的是“ababbabbab”,但是如果它写的是“oohmtkgfgk”,那么它需要抛出一个异常 public class Writer { public void writer() { try { FileWriter writer = new FileWriter("FSA.txt", true); writer.

我试图用Java创建一个程序,它可以写一行字符,但只写一些字符,在本例中是“a”或“b”。我该怎么做

现在它写的是“ababbabbab”,但是如果它写的是“oohmtkgfgk”,那么它需要抛出一个异常

public class Writer {
    public void writer() {
        try {
            FileWriter writer = new FileWriter("FSA.txt", true);
            writer.write("ababbbabbaab");
            writer.close();
        } catch (IOException e) {
            System.out.println("Error");
        }
    }
}
 public static void main(String[] args) {

     try {
            FileWriter writer = new FileWriter("FSA.txt", true);
            String str = "ababbbabbaabc";
            checkText(str);
            writer.write(str);
            writer.close();
        } catch (IOException e) {
            System.out.println("Error");
        }
}

private static void checkText(String string) throws IOException {
    for(String str: string.split("")) {
        if(str.equals("")) continue;
        if(!str.equals("a") && !str.equals("b")) throw new IOException();
    }       
}

创建一个方法并验证要存储的字符串中是否存在ab

例子
拆分字符串并检查所有字母是否为a或b,如果不是,则抛出异常

public class Writer {
    public void writer() {
        try {
            FileWriter writer = new FileWriter("FSA.txt", true);
            writer.write("ababbbabbaab");
            writer.close();
        } catch (IOException e) {
            System.out.println("Error");
        }
    }
}
 public static void main(String[] args) {

     try {
            FileWriter writer = new FileWriter("FSA.txt", true);
            String str = "ababbbabbaabc";
            checkText(str);
            writer.write(str);
            writer.close();
        } catch (IOException e) {
            System.out.println("Error");
        }
}

private static void checkText(String string) throws IOException {
    for(String str: string.split("")) {
        if(str.equals("")) continue;
        if(!str.equals("a") && !str.equals("b")) throw new IOException();
    }       
}

使用regex^[ab]*$验证字符串,而不是拆分和迭代。保存代码行。此正则表达式验证文本是否仅包含[]内的字符(在案例a和b中)

public static void main(String[] args) {

     try {
            FileWriter writer = new FileWriter("FSA.txt", true);
            String str = "ababbbabbaabc";
            validate(str);
            writer.write(str);
            writer.close();
        } catch (IOException e) {
            System.out.println("Error");
        }
}

private static void validate(String string) throws IOException {
    if(!string.matches("^[ab]*$"))
      throw new IOException();             
}

在写入之前检查内容,确保它们只包含所需的字母。创建FileWriter的子类,重写
write()
方法,首先检查内容是否在您期望的范围内,如果成功,则调用
super.write()
,否则通过您自己的自定义异常,或者,如果(字符串包含错误的字母)抛出新的某种异常(消息),则使用其他常规的
IOException
谢谢你帮助我!谢谢你的帮助!