2016-11-17 8 views
0

私はJavaプロジェクトに取り組んでおり、問題が発生しています。私はlist/array cで2つのリストまたは配列aとbを減算したいと思っていますが、それをどうやって行うのか分かりません。私は "a [i] -b [i]"が値がc[i]でなければならない次のリストCにあるべきで、5-2 = 3の場合はどんな提案や助けもありがたいです。Javaで2つのリスト/配列の値を引く方法は?

コード:

public static void länge() { 
    { 
     BufferedReader br = null; 
     try { 
      br = new BufferedReader(new FileReader(new File("C:\\Users/Voodoothechild/Desktop/Pidata/Anfang.txt"))); 
      String line = null; 
      while ((line = br.readLine()) != null) {   
       { 
        BufferedReader bro = null; 
        try { 
         bro = new BufferedReader(new FileReader(new File("C:\\Users/Voodoothechild/Desktop/Pidata/Ende.txt"))); 

         String lines = null; 
         while ((lines = br.readLine()) != null) { 

          String[] anfang = line.split("\n"); 
          String[] ende = lines.split("\n"); 

          List<Integer> an = new ArrayList<Integer>(); 
          List<Integer> en = new ArrayList<Integer>(); 

          for (int index = 0 ; index<ende.length ; index++) { 

           an.add(Integer.parseInt(anfang[index])); 
           en.add(Integer.parseInt(ende[index])); 
           Integer[] anf = new Integer[an.size()]; 

           int[] result = new int[anf.length]; 

           for (int i = 0; i < result.length; i++) { 
            result[i] = anf[i] - end[i]; 
           } 

          } 
         }  
        } catch (FileNotFoundException e) { 
         e.printStackTrace(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } finally { 
         if (bro != null) { 
          try { 
           bro.close(); 
          } catch (IOException e) { 
           e.printStackTrace(); 
          } 
         } 
        } 
       } 
      } 
     } catch(FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch(IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (br != null) { 
       try { 
        br.close(); 
       } catch(IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
} 
+0

してくださいコードの書式を修正してください。あなたの問題を解決する。ちなみに、各ペアまたは要素をループして減算する方法は、これを行う方法です。 –

+0

リストや配列をループする必要がありますか?そしてtnxの仲間 – Voodoothechild

+0

いずれかを使用しても問題ありません。 2つのデータセットが常に同じサイズになると思うなら、私は配列の方に傾いているかもしれません。 –

答えて

0

そのかなりまっすぐ進みます。プログラミング問題に取り組む前に。常にそれをステップで実行します。たとえば、あなたの問題を抱えてください。値を持つ2つの配列から値を減算する必要があります。

int [] list1 = {4,2,1};

int [] list2 = {2,2、-1};

これで2つのリストがあります。 [OK]を次のステップは、リストを通過するループを記述します。しかし、まず両方のリストの長さが同じであることを確認してください。そうしないと、バウンスからインデックスを取得します。

for(int i =0; i< list1.length; i++) 
    { 
     list3[i] = list1[i] - list2[i]; 
    } 

とにかくここでは完全な答えです。それを

パブリッククラス減算 {

public static void main(String[] args) 
    { 
    int[] list1 = {4,2,1}; 
    int[] list2 = {2,2,-1}; 
    int[] list3 = new int[list1.length]; 

    //Looping the list 
    for(int i =0; i< list1.length; i++) 
    { 
     list3[i] = list1[i] - list2[i]; 
    } 

    //Print Statement 
    for(int j =0; j< list3.length; j++) 
    { 
     System.out.println(list3[j]); 
    } 
    } 

}

+0

list1とlist2の両方が同じサイズであることを確認するチェックを追加する必要があります。しかし、あなたはその考えを得る。 –

+0

この問題は、java.lang.NullPointerException ausgespuckt:int [] results = null; I Voodoothechild

+1

は書かれていません。 int [] results = new int [anf.length];のようなものを書いてください。 –

0

は、ここでは、あなたのプログラムに適用することができる非常に単純な答えだと理解してください。

public static void main(String[] args) { 
    int[] a = new int[4]; 
    int[] b = new int[4]; 
    int[] c = new int[4]; 

    a[0] = 5; 
    a[1] = 12; 
    a[2] = 20; 
    a[3] = 50; 
    b[0] = 1; 
    b[1] = 2; 
    b[2] = 3; 
    b[3] = 4; 

    for(int i=0; i<a.length; i++){ 
     c[i] = a[i] - b[i]; 
     System.out.println(c[i]); 
    } 
} 
1

それはストリームAPIを使用して簡単に行うことができます。

Stream.range(0, list1.length) 
    map(i -> list1[i] - list2[i]); 

または二つのリストを一緒にビュンによって:Javaslangを使用して

int[] list1 = {4,2,1}; 
int[] list2 = {2,2,-1}; 

IntStream.range(0, list1.length) 
    .mapToObj(i -> list1[i] - list2[i]) 
    .collect(Collectors.toList()); 

またはさらに簡単

List.ofAll(list1) 
    .zip(List.ofAll(list2)) 
    .map(t -> t._1 - t._2); 
関連する問題