while循环,似乎无法让它得到正确的数据

问题描述:

编写一个要求整数的类num确保它大于0(数据验证),并计算并返回以下总和系列号码:while循环,似乎无法让它得到正确的数据

1/num + 2/num-1 + 3/num-2 + …. (num-1)/2 + num/1 

不要陷入整数除法!

通过调用num = 2;来测试您的方法,您会预期结果为2.5

public class LengthSeries 
{ 
    public static void main (String[] args) 
    { 
    //variable declarations 
    Scanner keyboard = new Scanner(System.in); 
    int num; 
    int sum = 0; // sum 
    int ctr = 1 ; //counter 

    //Accept the required data 

    System.out.print ("Enter a whole number greater than 0 : "); 
    num = keyboard.nextInt(); 



    //Process the data in order to determine data 
    while (num <= 0){ 
        System.out.println ("Sorry number invalid"); 
        System.out.println ("please write a whole number greater than 0 : "); 
        num = keyboard.nextInt(); 
        } 


    while (num <= 0){ 

        sum += (ctr/num); 
        num -= ctr; 
        ctr++; 
       } 





    //Display the output 
    System.out.println(); 
    System.out.println ("Your sum is: "   +sum); 
    System.out.println ("\n\nWritten by: KinnahRose Lopez"); 

    } //end main method 
} //end LengthSeries class 
+0

'sum'是'int',它永远不会是2.5。你需要使用'double'。 – Guy

double sum =0; 
for(double i=1.0; i<= num; i+=1.0) { 
    sum+=i/(num-i-1); 
} 

你可以试试这个:

public static void main(String[] args) throws Exception { 
    Scanner keyboard = new Scanner(System.in); 
    System.out.print ("Enter a whole number greater than 0 : "); 
    int num = keyboard.nextInt(); 
    while (num<1) { 
     System.out.print ("Enter a whole number greater than 0 : "); 
     num = keyboard.nextInt(); 
    } 

    double sum = 0; 
    double d = num; // convert num to double to get the correct result. 
    for (int i = 1; i <= num; i++) { 
     sum += i/(d-(i-1)); 
    } 
    System.out.println("sum = " + String.format("%.2f", sum)); 
} 

例子:

Enter a whole number greater than 0 : 2 
sum = 2.50 
+0

我还没有学习,所以我不能使用它。是否有另一种严格使用while循环的方法? – KinnahRose

+0

我已经发布完美的作品。您可以复制并粘贴并运行程序,您将看到结果。 –

import java.util.Scanner;`enter code here` 
public class Test 
{ 
    public static void main (String[] args) 
    { 
     //variable declarations 
     Scanner keyboard = new Scanner(System.in); 
     int num; 
     double sum = 0; // sum 
     //Accept the required data 
     System.out.print ("Enter a whole number greater than 0 : "); 
     num = keyboard.nextInt(); 
     //Process the data in order to determine data 
     while (num <= 0){ 
      System.out.println ("Sorry number invalid"); 
      System.out.println ("please write a whole number greater than 0 : "); 
      num = keyboard.nextInt(); 
     } 
     int temp = num; 
     for (double i = 1; i <= num; i++) 
     { 
      sum = sum + (i/temp); 
      temp--; 
     } 
     //Display the output 
     System.out.println(); 
     System.out.println ("Your sum is: "   +sum); 
     System.out.println ("\n\nWritten by: KinnahRose Lopez"); 

    } //end main method 
} //end LengthSeries class