计数控制循环有问题

时间:2016-11-11 18:01:01

标签: java

所以我正在参加Java课程的介绍,并且在完成我的作业时遇到了一些困难。

首先,我要粘贴作业指示,然后我会发布我的代码,这样你们都可以看到我在哪里挣扎,希望能够帮助我。

路线: 在工作的第一天,一个人一整天都赚了1.00美元。在工作的第二天,该人的每日工资翻了一番,达到2.00美元。工作的第三天,该人的每日工资再次翻倍至4.00美元。连续一天,一个人的工作日常工资增加一倍。

编写一个程序,要求用户输入他们工作的天数,然后计算他们每天赚取的工资以及他们所有日子的总工资。节目输出应该是每天的工资和所有日子的总工资。

输入验证:不要让用户输入小于1的天数。如果输入的数字小于1,请使用循环提示他们输入另一个天数。确保并确定输出格式。

我的代码:

import java.util.Scanner;

import java.text.DecimalFormat;

public class Homework7Pennies

{

public static void main (String[] args)

 {
  Scanner keyboard = new Scanner (System.in);
  DecimalFormat formatter = new DecimalFormat("$#0.00");
  double totalPay = 0;
  int totalDays;

  System.out.println("Please enter the number of days you worked: ");
  totalDays = keyboard.nextInt();

  while (totalDays <1)
  {
  System.out.println("You have entered an invalid number of days. ");
  System.out.println("Please enter the number of days you worked: ");
  totalDays = keyboard.nextInt();
  }

  for(int counter = 1; counter <= totalDays; counter++)
  {
  System.out.println("Pay for Day #" + counter + ": " + formatter.format(counter));
  }
  totalPay = totalPay + counter;
  System.out.println("TOTAL PAY FOR " + totalDays + " DAYS: " + formatter.format(totalPay));

   }
}

我遇到的问题是: 1)我不确定如何在不增加第一天工资的情况下加倍工资

2)我如何一次打印TOTAL PAY?截至目前,每当我运行我的程序时,它将打印它与工作天数相同的次数。我只需要打印一次。

1 个答案:

答案 0 :(得分:1)

这就是你想要做的。我只是在你for循环中做了一些小改动。把totalPay = totalPay + result放在循环中。希望这对你有所帮助。

public class Test {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        DecimalFormat formatter = new DecimalFormat("$#0.00");
        double totalPay = 0;
        double result = 1.00;//for showing per day payment
        int totalDays;

        System.out.println("Please enter the number of days you worked: ");
        totalDays = keyboard.nextInt();

        while (totalDays < 1) {
            System.out.println("You have entered an invalid number of days. ");
            System.out.println("Please enter the number of days you worked: ");
            totalDays = keyboard.nextInt();
        }

        for (int counter = 1; counter <= totalDays; counter++) {
            System.out.println("Pay for Day #" + counter + ": " + formatter.format(result));
            totalPay = totalPay + result;//for getting total payment
            result *= 2;//for doubling payment as number of day increase
        }

        System.out.println("TOTAL PAY FOR " + totalDays + " DAYS: " + formatter.format(totalPay));
    }

}