0

ファイルやフォルダーを非表示および非表示にするためのこのコードを作成しましたが、ユーザーが間違った入力をしたときにエラーを表示する方法、else if を使用してみましたが、ロジック コードが間違っていて、非表示を選択しているときにユーザーが間違った入力をしたときにエラーを表示したいまたは再表示し、ユーザーがファイルを非表示または再表示するために間違ったパスを指定した場合。

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);
            }
        }
    }
}
4

2 に答える 2

1

オプション選択の検証

if{} else if{} else if {}else{}最初のエラー メッセージが表示された時点で 90% が経過しています。一連のエラー メッセージがある場合は、if に収まらないものはすべて else で終わることを覚えておいてください。そう

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))常に false になります。が何a であれ、それは本質的にそれ自体です

于 2013-09-17T15:20:46.360 に答える