2013-06-27 3 views
0

моя программа почти готова к работе. Думаю, однако, что я не могу представить сумму как число «3.2» или «5.2». По какой-то причине он возвращает значения только как 2.0 или 3.0 или 4.0, например целые числа с 0. в конце. Любая помощь?Java: Ошибка: Возможная потеря точности

import java.io.Console; 
import java.util.Scanner; 
/** 
* 
* @author binka 
*/ 
public class Samelson_Lincoln_Lab6 { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     // TODO code application logic here 
     Scanner in = new Scanner(System. in); 
     System.out.println("Please enter a number?"); 
     int number = in .nextInt(); 
     double[] array = new double[number]; 
     System.out.println(); 
     int sign = 0; 
     double term = 0; 
     for (int i = 1; i < array.length; i++) { 
      if (sign == 0) { 
       term = Math.abs((4.0/((2.0 * i) - 1.0))); 
       array[i] = term; 
       sign = 1; 
      } else if (sign == 1) { 
       term = ((4.0)/((2.0 * i) - 1)); 
       array[i] = -term; 
       sign = 0; 
      } 
      System.out.println(array[i]); 
     } 
     boolean choice = true; 
     while (choice = true) { 
      System.out.println("Would you like to see the sum?: (Y or N)"); 
      String choicesum = in .next(); 
      choicesum.toUpperCase(); 
      if ("Y".equals(choicesum)) { 
       double sum = computeSum(array); 
       System.out.println("Your sum is: " + sum); 
       choice = false; 
       break; 
      } else if ("N".equals(choicesum)) { 
       System.out.println("See ya!"); 
       choice = false; 
       break; 
      } else { 
       System.out.println("Not a correct response, try again!"); 
      } 
     } 
    } 

    public static int computeSum(double[] array) { 
     double sum = 0; 
     for (int i = 0; i < array.length; i++) { 
      sum = sum + array[i]; 
     } 
     return sum; 
    } 
} 

ответ

8
while (choice = true) { 

должен быть по крайней мере

while (choice == true) { 

или даже лучше

while (choice) { 

Чтобы исправить фактические ошибки, изменить подпись метода из

public static int computeSum(double[] array) { 

в

public static double computeSum(double[] array) { 
+0

Спасибо так много. Это именно то, что я искал. – Binka

+3

Возможно, вы хотите показать некоторую любовь к SO и принять ответ? –

+1

новый на этом сайте, как мне это сделать? О, большая галочка, поняла :) – Binka