如何在给出错误输入时显示错误

时间:2013-09-17 14:59:14

标签: java

我写了这段代码用于隐藏和取消隐藏任何文件或文件夹,但是当用户输入错误时如何显示错误,我尝试使用else但是如果但是逻辑代码错误,我想在用户输入错误时显示错误选择隐藏或取消隐藏,如果用户提供了隐藏或取消隐藏文件的错误路径。

import java.io.*;
class k
{

    public static void main(String args[])
    {
        String a,h;
        boolean q=true;
        while(q==true){
            try{
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                System.out.print("\nunhide/hide/exit (u/h/e): ");
                h=br.readLine();
                if("hide".equalsIgnoreCase(h)){

                    System.out.print("\nwhat you want 2 hide: ");
                    a=br.readLine();


                    if(a.equals(a)){
                        Runtime r=Runtime.getRuntime();
                        Process p=r.exec("cmd.exe /c attrib +h "+a);
                        System.out.print("HIDDEN SUCCESSFULLY");
                    }

                        //else if(!a.equals(a)){System.out.print("error");}
                }else if("unhide".equalsIgnoreCase(h)){
                    System.out.print("what u want to unhide: ");
                    a=br.readLine();
                    if(a.equals(a)){
                        Runtime r=Runtime.getRuntime();
                        Process p=r.exec("cmd.exe /c attrib -h "+a);
                    }
                    System.out.print("UNHIDDEN SUCCESSFULLY");
                }

                else if("exit".equalsIgnoreCase(h)){
                    System.exit(1);
                }
            }catch(Exception e){
                System.out.println(e);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

首先:您让用户选择3个字母(hue), 所以你需要确保用户输入“h”而不是“隐藏”,所以你的检查需要

   if ("h".equalsIgnoreCase(h)) //h not hide {
    .....
}

:很容易检查您输入的路径是否存在,所以如果错了,您可以知道,如下所示:

if (new File(a).exists()) {
      Process p = r.exec("cmd.exe /c attrib +h " + a);
      System.out.print("HIDDEN SUCCESSFULLY " + p);

} else {
      System.out.println("wrong input");
}

答案 1 :(得分:1)

验证选项选择

你有90%的第一条错误消息,请记住,如果你有一系列if{} else if{} else if {}else{},那么任何不适合ifs的东西都会以其他方式结束。所以

if("hide".equalsIgnoreCase(h)){

    System.out.print("\nwhat you want 2 hide: ");
    a=br.readLine();


    if(a.equals(a)){ //<-----a.equals(a) is not valid validation!
        Runtime r=Runtime.getRuntime();
        Process p=r.exec("cmd.exe /c attrib +h "+a);
        System.out.print("HIDDEN SUCCESSFULLY");
    }else{
        System.out.println("Invalid Input");
    }

}

}else if("unhide".equalsIgnoreCase(h)){
    System.out.print("what u want to unhide: ");
    a=br.readLine();
    if(a.equals(a)){
        Runtime r=Runtime.getRuntime();
        Process p=r.exec("cmd.exe /c attrib -h "+a);
    }
    System.out.print("UNHIDDEN SUCCESSFULLY");
}else if("exit".equalsIgnoreCase(h)){
    System.exit(1);
}else{
    System.out.println("Invalid Input");
} 

这将在输入无效选项时显示错误消息,但您对文件名的现有验证不正确,因此如果没有“不正确”的定义,则无法生成错误消息。

路径验证

我猜无效是任何触发catch块的东西所以在循环中移动try catch并使用它来验证输入;

if("hide".equalsIgnoreCase(h)){

    System.out.print("\nwhat you want 2 hide: ");
    a=br.readLine();


    try{
        Runtime r=Runtime.getRuntime();
        Process p=r.exec("cmd.exe /c attrib +h "+a);
        System.out.print("HIDDEN SUCCESSFULLY");
    }catch(Exception e){
        System.out.print("Invalid path");
    }

}

其他要点

正如评论中所讨论的那样if(a.equals(a))将永远是错误的。无论a ,它本身就是