2016-07-21 15 views
0

私はユーザーから入力を受け取り、その領域に私たちの構造体の量を尋ねた後、値を保存するようにコンソールアプリケーションを作成しようとしています。リストに私はトンをしようとしていますが構造によって、総面積はされsubstractされないが、私はarrayListの値を合計する方法

package lawn; 

import java.util.Scanner; 
import java.util.List; 
import java.util.ArrayList; 

/** 
* 
* @author norbe 
*/ 
public class Lawn { 

    private double lenght, width; 
    private double totalArea; 
    private double structureArea; 
    private double tot; 
    List<Double> list = new ArrayList<Double>(); 
    public Lawn(){ 
    return;} 

    public Lawn(double Lenght, double Width) { 
     this.lenght = Lenght; 
     this.width = Width; 

    } 

    public double getWidth() { 
     return width; 
    } 

    public void setWidth(double Width) { 
     this.width = Width; 
    } 

    public double getLenght() { 
     return lenght; 
    } 

    public void setHeight(double Lenght) { 
     this.lenght = Lenght; 
    } 

    public void getTotalArea() { 
     Scanner sc = new Scanner(System.in); 
     double lenght; 
     double width; 
     System.out.println("please enter Total lenght :\t "); 
     lenght = sc.nextDouble(); 
     if (lenght >= 0.0) { 
      System.out.println("Please enter width :\t "); 
      width = sc.nextDouble(); 
      if (width > 0.0) { 
       totalArea = lenght * width; 
       System.out.println("Your total area is :\t " + totalArea); 
      } else { 
       System.out.println("Invalid entry"); 
      } 
     } else { 
      System.out.println("Invalid entry"); 
     } 

    } 

    public void getStructureArea() { 
     Scanner sc = new Scanner(System.in); 
     /*double lenght; 
     double width;*/ 
     System.out.println("please enter Structure lenght :\t "); 
     lenght = sc.nextDouble(); 
     if (lenght >= 0.0) { 
      System.out.println("Please enter Structure width :\t "); 
      width = sc.nextDouble(); 
      if (width > 0.0) { 
       structureArea = lenght * width; 
       list.add(structureArea); 
       System.out.println("Your Structure area is :\t " + structureArea); 
      } else { 
       System.out.println("Invalid entry"); 
      } 
     } else { 
      System.out.println("Invalid entry"); 
     } 

     System.out.println(list); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     double tot = 0; 
     Lawn lawn = new Lawn(); 
     lawn.getTotalArea(); 
     System.out.println("Please enter number of structures : "); 
     Scanner sc = new Scanner(System.in); 
     int structures = sc.nextInt(); 
     for (int count = 1; count <= structures; count++) { 
      lawn.getStructureArea(); 
     } 

     double sum = 0; 
     /* for (Double item : list) { 
      tot += item.structureArea; 

     }*/ 

    } 
} 
+1

しかし、リストから値を合計できませんなぜですか?どうしましたか?あなたがそれをやり遂げるのを妨げるのは何ですか? –

+0

私はforループを使って試した値にアクセスする方法を知りませんが、どこに値@SotiriosDelimanolisを格納するのかわからないです。 –

+0

'void'メソッドは' get'で始めるべきではありません。 – shmosel

答えて

1

はこれを試してみてくださいリストから値を合計カント:

for (Double item : lawn.list) { 
    tot += item; 
} 
+0

それは私がしたことが働いたので、二重和= 0です。 for(ダブルアイテム:lawn.list){ tot + = item; sum = tot; } System.out.println( "sum" + sum); double areaMinusStructure = totalArea - sum;System.out.print(areaMinusStructure); } –

1

あなたはでそれを行うことができますあなたJava 8ラムダを歌う:

Double total = lawn.list.stream().mapToDouble(i -> i).sum(); 
関連する問題