プログラム学習室 http://studyhallweb.com/

Java学習記: ファイル読み込みなど

ファイルの文字入力

import java.io.*;

public class S005cin {
  public static void main(String[] args) {

    // 入力用オブジェクト
    BufferedReader cinBuff = new BufferedReader(
      new InputStreamReader(System.in), 1);

    // コンソールからの文字入力
    try {
      System.out.println("文字を入力してください:");

      // 入力用オブジェクトが文字入力を受付、それをStringクラスに代入
      String strInput = cinBuff.readLine();

      System.out.println("入力された文字は「" + strInput + "」です");
    }
    catch (IOException e) {
      System.out.println("IOExceptionエラー発生");
    }

  }
}
				

ファイル読込み(1文字ごと)

import java.io.*;

public class S006FileReader {
  public static void main(String[] args) {

    //コマンドライン引数のチェック
    if (args.length == 0) {
      System.out.println("ファイルの指定がありません");
      return;
    }

    try{
      File iFile = new File(args[0]);
      FileReader in  = new FileReader(iFile);
      // ファイルを順次文字単位で読込み
      int c;  // 読込んだ文字を格納する、これはcharでなくintでなくてはだめ
      while ((c = in.read()) != -1) {
        System.out.print((char)c);  // 表示時にcharにキャストする
      }
      in.close();
    }
    catch (IOException e) {
      System.out.println("File I/O Errer");
      System.out.println(e);
    }

  }
}
				

ファイル読込み(1行ごと)

import java.io.*;

public class S007BufReader {
  public static void main(String[] args) {

    //コマンドライン引数のチェック
    if (args.length == 0) {
      System.out.println("ファイルの指定がありません");
      return;
    }

    try{
      File inFiles = new File(args[0]);
      FileReader inFile  = new FileReader(inFiles);
      BufferedReader inFileBuf = new BufferedReader(inFile);

      // 行単位で読込む
      String s;
      while ((s = inFileBuf.readLine()) != null) {
        System.out.println(s);
      }
      inFileBuf.close();
      inFile.close();
    }
    catch (IOException e) {
      System.out.println("File I/O Errer");
      System.out.println(e);
    }

  }
}
				

Stringクラス

public class S008String {
  public static void main(String[] args) {

    String s = "あいう123ABC";

    System.out.println("文字列=" + s);
    System.out.println("長さ=" + s.length());
    System.out.println("3文字目=" + s.charAt(2));          // 0からカウント
    System.out.println("4~6文字目=" + s.substring(3, 6));  // 終了の位置に注意
    System.out.println("ABCの位置=" + s.indexOf("ABC"));
  }
}
				

メソッドの引数

メソッドの戻り値だけでなく引数も値を変更したい場合は、引数を参照型にする必要がある
例えば、int型の引数の値を参照型にするには、C/C++ であればアドレスを渡せばよいが、Javaの場合はクラスにする必要がある
class test {
  public int x;
}

public class S009Method {

  private static int func1(int x) {
    int y = x * 2;
    x++;
    return y;
  }

  private static int func2(test B) {
    int y = B.x * 2;
    B.x++;
    return y;
  }

  public static void main(String[] args) {
    int a = 3;
    int ans;
    ans = func1(a);
    System.out.println("fun1 x = " + a);      // a は変更されていない
    System.out.println("fun1 y = " + ans);

    test A = new test();
    A.x = 3;
    ans = func2(A);
    System.out.println("fun2 x = " + A.x);    // A.x は変更される
    System.out.println("fun2 y = " + ans);
  }
}