2016-12-05 76 views
-2

该程序应显示计算总计的一系列分数(由用户确定)。它不会让我在程序中输入分数,只是它所表示的分数通常无效。While循环并显示条形码作为输出

import java.util.*; 
public class Fractions 
{ 
    public static void main(String[] arg) 
    { 
     //------------------ declare ints and constants ---- 
     Scanner stdIn = new Scanner(System.in); 

     int  fractions  = 0, 
      count   = 1, 
      fractionAdd  = 0; 

     double enteredFraction = 0; 

     boolean inValid = false; 
     //------------------- welcome msg ----------------------- 
     System.out.println("\n * * * Welcome to Fractions * * *\n"); 

     //--------------------- get input ---------------------- 
     System.out.print("Enter the number of fractions: "); 
     fractions = stdIn.nextInt(); 

     if (fractions < 2 && fractions > 10) 
      inValid = true; 
     else 
      inValid = true; 

     while (inValid) 
     { 
      System.out.print(
       fractions + " is invalid, please re-enter ractions (2-10): " 
      ); 

      fractions = stdIn.nextInt(); 

      if (fractions < 2 && fractions > 10) 
       inValid = true; 

      else 
       inValid = false; 

     } 
     while (count < fractions) 
     { 
      System.out.println(fractions + "+"); 
      fractions += count; 

      while (fractions < count) 
      { 
       System.out.print(enteredFraction + " +"); 
       fractions ++; 
      } 

      if(enteredFraction <= fractions) 
       System.out.println("Error, please re-enter number of fractions (2-10)"); 

     } 

     //--------------------- end msg --------------------------- 
     System.out.println("\nThanks for using the Fraction Adder program"); 

    } //end main 
}//end program 
+2

你可以分享你的输出,并添加究竟是什么问题的细节。 –

+0

你写了'else inValid = true;'但是你肯定是想在那里放假。另外,inValid为false是双重否定的...你应该重命名为“有效” –

回答

0

我觉得问题就在这里。 您在这两种情况下都设置了'inValid'标志。

0

你必须改变fractions += count;fractions += count;

if (fractions < 2 && fractions > 10) 
      inValid = true; 
     else 
      inValid = true; 

总是true则必须将其更改为inValid = fractions < 2 && fractions > 10;