1

これを使用して特定のフォルダーとサブフォルダーに画像を表示すると、すべてが「正常に動作」し、ファイルは次の形式で名前が付けられます。

17000.001 17000.002 18555.001 18542.001 1.001 1.002 1.003 1.004 .....

.xxx は拡張子です (名前が変更された TIFF)

プログラムは次のように動作します。

必要な数値を入力します。例: 17000 が必要です。17000 と入力すると、最初の .001 が画面に返され、他の .002、.003 とその数が返されます。次の画像ボタンと前の画像...

問題は、4 .004 以上の数字を検索しようとすると、最初の数字が表示されず、「ランダム」、.002、004 などと表示される理由がわかりません。 「パス」を取得するコード!! コードのために私を殺さないでください^^!

....

        public void geraListaArquivos(String subdir, String matricula) {


            String diretorio = "F:\\registro_sql\\Imagens\\Livro02" + "\\"

     + subdir + "\\";
            String novaimagem = null;

            File folder = new File(diretorio);
            listOfFiles = folder.listFiles();
            if (!folder.exists()) { 
                JOptionPane.showMessageDialog(null,"Não existe o diretório em que está tentando fazer a busca");
            } else {
        //  JOptionPane.showMessageDialog(null, diretorio);
            for (int i = 0; i < listOfFiles.length; i++) {  

                String matsonome[] = listOfFiles[i].getName().split("\\.");

                for (int i2 = 0; i2 < matsonome.length; i2 = i2 +2) {

                    if(matsonome[i2].matches(matricula)) {
                        System.out.println(matsonome[i2] = "." + matsonome[i2+1]);
... the rest of the code, if the typed number image exist in the folder

配列の最初の部分が入力された数値と一致するかどうかを確認するために文字列 matsonome を編集します..

このようになります:

matsonome[0] = 17000
matsonome[1] = 001
matsonome[2] = 17000
matsonome[3] = 002

この場合、"System.out.println(matsonome[i2] = "." + matsonome[i2+1]);"

4未満であるため、正しい表示が表示されます

17000.001 17000.002

ただし、入力された数字が 4 つ以上の場合は、次のように表示されます (順不同):

xxxx.002 xxxx.001 xxxx.004 xxxx.003

どうして???

悪い英語でごめんなさい:(

4

1 に答える 1

2

注文が保証されていないためだと思います(質問を正しく理解していれば)。

ドキュメントを参照してください。

結果の配列内の名前文字列が特定の順序で表示されるという保証はありません。特に、アルファベット順に表示されるとは限りません。

つまり、静的関数を使用して配列を並べ替える必要があります。

于 2013-08-23T18:31:26.603 に答える