txtファイルにあるデータを読み込み、計算し、出力させたい。


ネット上でよく見かけるコードですが、実行するとcmd上にtxt内容が出力されます。

txtにある数値データを配列に納め、それらを用いて計算し、結果出力させたいです。while文中でfor文 +
charAt(i)で出力とかあれこれ書いてみるのですが、思うようにいきません。

そもそもこのテキストもどこかのサイトから持ってきたようなものですが、  
・最初と最後にある"/"は無くても出力に支障はないですか？  
・数値の間に","がありますが、" "空きスペースでも支障は無いですか？

手始めにGNSSデータと基準点座標を比較して誤差等、簡単な統計処理をしてみたいです(excelのほうが簡単だろうけど)。

手すきの方あれば、ご教示お願いします。

[code]

    import java.util.*;
    import java.io.*;
    import java.nio.*;
     
    class Main01{
        public static void main(String[] args) {
            if(args.length != 1){
                System.out.println("ファイル名を正しく入力して下さい。");
            }
            
            try{
                    BufferedReader br = new BufferedReader(new FileReader (args[0]));
                    String str;
    
                    while((str = br.readLine()) != null){
                        System.out.println(str);
                    }
                    br.close();
            
            }catch(ArrayIndexOutOfBoundsException e){
            }catch(IOException e){
                System.out.println(e);
            }
        }
    }
    
[/code]

読み込みデータ  
[![読み込みデータ](https://i.stack.imgur.com/xDFj5.png)](https://i.stack.imgur.com/xDFj5.png)




> txtにある数値データを配列に納め

[`String#split`](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#split-
java.lang.String-)で文字列を分割できます。  
空白文字を[`String#trim`](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#trim--)で除去して、[`Integer#parseInt`](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html#parseInt-
java.lang.String-)で数値化したものを配列化してください。

> それらを用いて計算し、結果出力させたい

後述のサンプルコードをご参照ください。

> ・最初と最後にある"/"は無くても出力に支障はないですか？

出力に支障がないようにコードを作成しましょう。  
サンプルコードはカンマ区切りの文字列を含む行以外を無視していますので、"/"があってもなくても同一の動きをします。

> ・数値の間に","がありますが、" "空きスペースでも支障は無いですか？

サンプルコードは区切り文字を","と決めてコードを作成したので、区切り文字がスペースだと支障があります。  
区切り文字がスペースの場合や混在する場合は`String#split`の第一引数を変更してください。

**サンプルコード**

[code]

    import java.util.*;
    import java.io.*;
    import java.nio.*;
    
    class Main01{
        public static void main(String[] args) {
            if(args.length != 1){
                System.out.println("ファイル名を正しく入力して下さい。");
                return;  // returnしない場合、この後の処理が続行されてエラーが発生する
            }
    
            try(BufferedReader br = new BufferedReader(new FileReader (args[0]))){
                String str;
                while((str = br.readLine()) != null){
                    // txtにある数値データを配列に納める
                    String[] ss = str.split(",", 2); // カンマ区切りで2つの文字列配列に分割する
                    if(ss.length != 2) {
                        continue;   // 配列の長さが2以外の行は無視する
                    }
                    int[] point = new int[] {Integer.parseInt(ss[0].trim()), Integer.parseInt(ss[1].trim())};
                    // 計算例として、原点(0,0)と比較したpointの距離と角度を計算する
                    double distance = Math.hypot(point[0], point[1]);
                    double degree = Math.toDegrees(Math.atan2(point[0], point[1]));
                    // コンソールに結果出力する
                    System.out.printf("距離: %.2f、角度: %.2f%s", distance, degree, System.getProperty("line.separator"));
                }
    
            }catch(Exception e){
                System.out.println(e);
            }
        }
    }
    
[/code]

**テキストファイル**

[code]

    /
      1,5
      2,4
      3.7
      4,9
      5,1
      6,0
    /
    
[/code]

**実行結果**

[code]

    距離: 5.10、角度: 11.31
    距離: 4.47、角度: 26.57
    距離: 9.85、角度: 23.96
    距離: 5.10、角度: 78.69
    距離: 6.00、角度: 90.00
    
[/code]

**参考資料**

  * [Java: Calculating the angle between two points in degrees](https://stackoverflow.com/q/9970281)
  * [I want to calculate the distance between two points in Java](https://stackoverflow.com/q/14431032)

