2016-04-19 43 views
0
public static void main(String[] args) { 

    Scanner keyboard = new Scanner (System.in); 
    double budget, total, expenseTotal; 

    System.out.print("Enter your budget for the month: "); 
    budget = keyboard.nextDouble();   
    System.out.println("Type -99 to stop calculations\n"); 
    byte start = 1; 

    double expense = 0; 

    while (expense != -99) { 

     System.out.print("Enter expense " + start + " :"); 
     expense = keyboard.nextDouble(); 

     start++;    

     if (expense == -99) { 
      System.out.println(); 
      total = (budget - expense) - 99; 
      System.out.printf("Your current total budget is: $%,.2f \n" , total); 
     } 
    } 
} 

电流输出:如何改变一个循环外部变量

输入您的月预算:1000 类型-99停止计算

输入费用1:100

输入费用2:-99

您目前的总预算是:$ 1,000.00

所需的输出:

您当前的预算总额为:$ 900.00

问题:费用被宣布while语句的外面,给我想通了数字0,由于费用= keyboard.nextDouble();在循环中,它会更新放置在循环外部的费用,但它没有。那么任何解决方案谢谢。

+0

是什么让你相信它没有更新?你是否在键盘输入后立即尝试'println'? –

+0

因为 合计=(预算 - 费用) - 99; –

+0

你的问题是'nextDouble()'在使用后不会跳过一行。请参阅链接。 –

回答

1

尝试以下之一:

public static void main(String[] args) { 

    Scanner keyboard = new Scanner (System.in); 
    double budget; 


    System.out.print("Enter your budget for the month: "); 
    budget = keyboard.nextDouble();   
    System.out.println("Type -99 to stop calculations"); 
    System.out.println(); 
    byte start = 1; 

    double expense = 0; 

    while (expense != -99) { 

     System.out.print("Enter expense " + start + " :"); 
     expense = keyboard.nextDouble(); 
     if (expense == -99) { 
      System.out.println(); 
      System.out.printf("Your current total budget is: $%,.2f \n" , budget); 
     }else{ 
      budget = (budget - expense); 
     } 
     start++;    
    } 
} 
0

相反

expense = keyboard.nextDouble(); 

expense += keyboard.nextDouble(); 

这是一样的

expense = expense + keyboard.nextDouble(); 

应该解决一切。

+0

这样做会导致循环失去通过键入-99结束的能力。 –

+0

对。然后添加一个变量来增加:** expBuffer = keyboard.nextDouble();费用+ = expBuffer; **然后** while(expBuffer!= -99)。**不要忘记创建变量。 – Cthulchu

+0

已经有'expenseTotal' :) –

0

你提到费用是while循环,这是真正的外部声明。但是您的费用总计之外的while循环声明。而且我认为这是您想要存储累计费用总额的变量(代码中缺少这些变量)。在你的程序下面做出这些小的改变将会产生你想要的结果。

我加的初始化expenseTotal,添加一行accummulate expenseTotal,并改变在那里你计算行:

public class Testprogram { 

    public static void main(String[] args) { 

     Scanner keyboard = new Scanner (System.in); 
     double budget, total = 0, expenseTotal = 0; 

     System.out.print("Enter your budget for the month: "); 
     budget = keyboard.nextDouble();   
     System.out.println("Type -99 to stop calculations"); 
     System.out.println(); 
     byte start = 1; 

     double expense = 0; 

     while (expense != -99) { 

      System.out.print("Enter expense " + start + " :"); 
      expense = keyboard.nextDouble(); 

      expenseTotal = expenseTotal + expense; 

      start++;    

     if (expense == -99) { 
      System.out.println(); 

      //total = (budget - expense) - 99; 
      total = (budget - expenseTotal) - 99; 
      System.out.printf("Your current total budget is: $%,.2f \n" , total); 
      } 
     } 
    } 
} 
0

你的问题是费用变量。 我做的如果他们输入0不是-99,只是因为我更喜欢它:)。

while(true){ 
     System.out.print("Enter expense " + start + " :"); 
     double value = keyboard.nextDouble(); 
     if(value == 0){ 
      System.out.println(); 
      total = (budget - expense); 
      System.out.printf("Your current total budget is: $%,.2f \n", total); 
      break; 
     } 
     else{ 
      expense += value; 
      start++; 
     } 
    } 
相关问题