我写了这段代码用于隐藏和取消隐藏任何文件或文件夹,但是当用户输入错误时如何显示错误,我尝试使用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);
}
}
}
}
答案 0 :(得分:2)
首先:您让用户选择3个字母(h
,u
,e
),
所以你需要确保用户输入“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
是,它本身就是