• 締切済み

javaで質問です。

java初心者です。 unix系のコマンドでfindコマンドの動作と同じ動作をするプログラミングを教えて頂きたいです。 実行の際に、同時に引数としてディレクトリを渡すとそのディレクトリ以下のファイルが全て一覧表示されるというものです。 どうしても下記のコードから進まないです。 特にわからない部分は ・7行目の配列の確保にどのような引数を渡せばいいのか。 ・繰り返し処理の中で、ディレクトリかどうかの条件文で更に下位層をチェックしていきたいが、下位層にいかない。 ・16行目のcでチェックしている箇所が配列のどの部分なのかを引数で渡してそこにコピーたいのですが、9行目のint c;で何を渡せばいいのか分からない。 ・11行目の条件の4の部分も何を渡せばいいのかわからない。 です。 どうかご教授いただきますようお願いします。 1 import java.io.File; 2 import java.util.Arrays; 3 4 public class Find { 5 public static void main(String[] args) { 6 File findFile = new File(args[0]); 7 File names[] = new File[15] ; 8 names[0] = findFile; 9 int c = 0; 10 11 for (int i = 0; i < 4; i++) { 12 names[i] = findFile; 13 if (names[i].isDirectory()) { 14 File subfiles[] = names[i].listFiles(); 15 names[i] = subfiles[i]; 16 System.arraycopy(names, i, names, (i + c), subfiles.length); 17 } 18 } 19 for (int k = 0; k < names.length; k++) { 20 System.out.println(names[k]); 21 } 22 } 23 }

みんなの回答

  • vollgins
  • ベストアンサー率22% (76/336)
回答No.1

関連するQ&A

  • javaのlengthに対して質問です

    javaのlengthに対して質問です public class Gauss { public static void main(String[] args){ int[] ia = new int[101]; for (int i = 0 ; i<ia.length;i++); } } 今の場合 ia.lengthはどれくらいの長さですか? ia だから2?

    • ベストアンサー
    • Java
  • javaの簡単な質問です

    学校の課題で、ループ文を使い、1-6までのカードを順に引いた場合、起こりうるパターンを全て表示するプログラムを作りなさいというのが出ました。 六枚全てを引くのだけではなく、一枚や二枚、五枚だけ引くというのもあるので、720+360+120+30+6通りがあります 下が作ったものなのですが、うまくいきません。 こういった場合、どのようなコードを書けばよいのでしょうか?for文で実現可能なのでしょうか?whileで同じ数字が出なくなるまで++するような形にするほうが良いのでしょうか? プログラミング初心者で、よくわかっていないです。すみません。どなたか助けてください。 *printsは表示処理を行う関数です public static void main(String[] args){ int[] numbers=new int[6];; for(int i=0;i<numbers.length;i++){//1 for(int j=0;j<numbers.length-1;j++){//2 int o=(i+j+1)%6; prints(numbers[i],numbers[o]); for(int k=0;k<numbers.length-2;k++){//3 int p=(o+k+1)%6; prints(numbers[i],numbers[o],numbers[p]); for(int l=0;l<numbers.length-3;l++){//4 int q=(p+l+1)%6; prints(numbers[i],numbers[o],numbers[p],numbers[q]); for(int m=0;m<numbers.length-4;m++){//5 int r=(q+m+1)%6; prints(numbers[i],numbers[o],numbers[p],numbers[q],numbers[r]); for(int n=0;n<numbers.length-5;n++){//6 int s=(r+n+1)%6; prints(numbers[i],numbers[o],numbers[p],numbers[q],numbers[r],numbers[s]); } } } } } } private void prints(int... num){ for(int i=0;i<num.length;i++){ System.out.print(num[i]); } } }

  • javaプログラミングの質問です。

    プログラムで数値の奇遇、合計値、最大値までは出せたのですが平均値の出し方がわかりません。 どこに何を入れればいいかを教えてください。お願いします。 public class pazu{ public static void main(String[] args){ int sum =0,saidai; System.out.println("コマンドラインパラメータは"+args.length+"個です"); for(int i=0;i<args.length;i++){ int x=Integer.parseInt(args[i]); if(pazu.is_even(x)) System.out.println(args[i]+"は偶数です"); else System.out.println(args[i]+"は奇数です"); sum+=x; } saidai=pazu.max(args); System.out.println("合計:"+sum); System.out.println("最大:"+saidai); } static boolean is_even(int number){ return number%2==0; } static int max(String[] number){ int max =0; for(int i=0;i<number.length;i++){ if(max<Integer.parseInt(number[i])){ max=Integer.parseInt(number[i]); } } return max; } }

    • ベストアンサー
    • Java
  • javaのファイル読み込み処理の質問です

    あるディレクトリから.txtファイルを検索し 検索して出た結果を1つずつ読み込んでいきたいです どのようにしたらよいのでしょうか? private static String path="C:\\textfolder "; public static voif main(String[] args) { File dir = new File(path); File[] files = dir.listFiles(); String fileName = dir.getName(); for (int s = 0; s < files.length; s++) { try {//ファイルオープン BufferedReader br = new BufferedReader(new FileReader(fileName)); } } catch (IOException e) { e.printStackTrace(); } } return; } } 現状はこのような感じになっています pathの中身はディレクトリのパスを指定しています。 ディレクトリはC:\textfolder でtextfolderというフォルダに.txt(拡張子)のファイルが複数あったとします。

    • ベストアンサー
    • Java
  • for文を使った累乗の計算方法について

    質問させてください。 for文を使った累乗の計算プログラムを作っています。 数値はコマンドライン引数から取得し、0番目の数字を i番目の数字分累乗するというものです。 ソースを途中まで作成したのですが、0乗した場合のプログラムが よく分かりません。どなたか教えていただけないでしょうか? public class Mondai { public static void main(String[] args) { //変数の初期化 int k = 0; if ( 2 <= args.length && args.length < 3) { //コマンドライン引数の数だけ配列を用意する int[] num = new int[args.length]; //0,1番目のコマンドライン引数を整数に変換してnumに代入する num[0] = Integer.parseInt(args[0]); k = num[0]; k *= k; num[1] = Integer.parseInt(args[1]); //num[1]の掛け算をnum[1]回繰り返す for (int i = 0; i < num[1] -2; i++) { k *= num[0]; } System.out.println("\"" + num[0] +"の" + num[1] + "乗は"+ k + "\""); if(num[1] == 0) { System.out.println("\"" + num[0] +"の" + num[1] + "乗は1\""); } //args.length <= 1の条件の時 } else if(args.length <= 1) { System.out.println("引数が足りないため累乗の計算ができません。"); //指定された条件以外の時 } else { System.out.println("引数が多すぎるため累乗の計算ができません。"); } } }

    • ベストアンサー
    • Java
  • javaの問題です。

    現在以下のようにプログラムを書いてみました。 public class Replace { public static void main(String[] args) { String str = args[0]; int num = str.indexOf(args[1]); while (num != -1){ str = ( str.substring(0, num) + args[2] + str.substring(num + args[1].length()) ); num = str.indexOf(args[1]); } System.out.println(str); } } 第一引数に第二引数が含まれていれば、それを第三引数に置換する、というものです。 上記にて第二引数が単体ならば動作するのですが、たとえば 第一引数:ABCBA 第二引数:AB 第三引数:C という風に第二引数を複数にすると、 結果がCCBAと後半のBAが変換されなくなってしまいました。 後半部分もAとBが含まれる、ということで、同じように変換出来るようにしたいのですがどのようにすればよいのでしょうか?;; どうぞよろしくお願いいたします;;

    • ベストアンサー
    • Java
  • Javaの文字列配列について質問です

    あは1行目の1つめです。 かは2行目の1つめです。 さは3行目の1つめです。 と表示させたいのですが、 Exception in thread "main" java.lang.NullPointerException at Nihongo.main(Nihongo.java:22) と出てきて出来ません。 どこが悪いのでしょうか? 22行目は「s[i].easyNihongo();」です。 class Hiragana { String boin; int num; int kaz; Hiragana(String b, int n, int k){ boin = b; num = n; kaz = k; } void easyNihongo(){ System.out.println(boin+"は"+num+"行目の"+kaz+"つ目です。"); } } class Nihongo{ public static void main(String [] args){ String aiueo[] = {"あ", "か", "さ"}; Hiragana [] s = new Hiragana[3]; for(int i=0; i<s.length; i++){ s[i] = new Hiragana(aiueo[i], 1, i++); s[i].easyNihongo(); } } }

    • ベストアンサー
    • Java
  • Eclipseで実行>Javaアプリケーションが表示されない

    Eclipseでソースを書いたところ、 右クリック>実行>でJavaアプリケーションが表示されませんでした。 他のソースはJavaアプリケーションが表示されて実行が出来ます。 どうしたら実行できるようになるのでしょうか? 前に行った操作で、原因として考えられるのは、 インポートからファイルシステムでソースをインポートしたぐらいです。 どなたか回答宜しくお願いします。 ~~~~以下がそのソースです。~~~~~~~ package selfJava; public class P78_2_9_2 { /** * @param args * @param */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ double i, j; if(args.length != 2){ System.out.println("引数を二つにしてください"); } for(int k = 0, k < args.length; k++){ if(Character.isDigit(args[0])){ }else{ System.out.println("数値を入力してください"); } } i = Integer.parseInt(args[0]); j = Integer.parseInt(args[1]); System.out.println("args[0] × args[1] =" + i * j); } }

  • ファイル管理ツールを作りたいのですが

    ファイル管理ツールを作る際に、ディレクトリ内のファイル名を取得し、それをアプレット画面のテキストエリアに表示させたいのですが全くやり方がわかりません。 初心者なりに頑張って作ってみたのですが、 import java.io.File; public class Filekanri{ public static void main(String args[]){ File dir = new File("C:\\MyDir"); File[] files = dir.listFiles(); // 全ファイルの名前を取得 String fnames[] = new String[files.length]; for( int i = 0; i < files.length; i++ ) { fnames[i] = files[i].getName(); } これで良いのでしょうか?このあとどうすれば良いのかどうかどうか教えてください。宜しくお願いします。

  • Double.parseDoubleの使い方

    Java初心者です。 以下のブログラムをコマンドライン引数が実数の場合に処理できるよう にしたいのですが、うまくいきません。どうしたらいいでしょうか? 申し訳ありませんが、ご回答、よろしくお願いいたします。 public class Narabikae { public static void main(String[] args) { int i = 0, j = 0, k = 0; double[] num = new int[args.length]; for(i = 0; i < args.length; i++) { double num[i] = Double.parseDouble(args[i]); } if (0 < args.length) { for(j = 0; j < args.length-1; j++) { for(i = j + 1; i < args.length; i++ ) { if(num[j] > num[i]) { k = num[j]; num[j] = num[i]; num[i] = k; } } } for(i = 0; i < args.length; i++) { System.out.print(num[i]); if (i != args.length-1) { System.out.print(" ⇒ "); } } } else { System.out.println("並び替えできません。"); } } }

    • ベストアンサー
    • Java