【问题标题】:assigning array values and calculation are wrong分配数组值和计算错误
【发布时间】:2018-10-30 22:05:03
【问题描述】:

问:计算每个月的用电量并获得每个月的付款。

  1. 我没有正确收到 jan、feb、march 等付款。每月付款应该分开。 110 = 1 月,88 = 2 月,依此类推。如果 jan 小于 40,则该值应乘以 20。

  2. 示例:如果 jan = 35 那么 35 *20 = 付款,即 700。所以这应该适用于所有月份。

  3. int 数组一月、二月、三月、四月、五月、六月、七月、八月、九月、十月、十一月、十二月。

class test2 {

    public static void main(String[] args) {

        int months[] = {110, 88, 125,168,210,65,75,98,133,165,175,189};
        int x, size, count;
        size = months.length;
        double rate_chrg=0, payment =0;
        count = 0;
        x= 0;

        while (x<size){
            if (months[x] <40){
                payment = months[x] * 20;

            }
            else if(months[x] <60){
                payment = months[x] * 30;

            }
            else if(months[x] <80){
                payment = months[x] * 40;
            }
            else if(months[x] <250){
                payment = months[x] * 60;
            }
            x++;
        }

        System.out.println("Jan => " + months[0] + " = " +payment);
        System.out.println("Feb => " + months[1] + " = "+  payment);

    }
}

这是我的输出:

一月 => 110 = 11340.0 二月 => 88 = 11340.0

金额金额错误,应该打印成Jan =&gt; 110 = 6600 以上答案 6000 来自 110 * 60 =6600

【问题讨论】:

  • 拜托我用过java编码

标签: java


【解决方案1】:
System.out.println("Jan => " + months[0] + " = " +payment);
System.out.println("Feb => " + months[1] + " = "+  payment);

将这些行放在while 循环中,你会看到不同的,问题是payment 将在while 中的每个循环之后重新初始化

【讨论】:

  • 是的,你是对的,每次都像这样重新启动:Jan => 110 = 6600.0 Feb => 88 = 6600.0 Jan => 110 = 5280.0 Feb => 88 = 5280.0 Jan => 110 = 7500.0 二月 => 88 = 7500.0 一月 => 110 = 10080.0 二月 => 88 = 10080.0 一月 => 110 = 12600.0 二月 => 88 = 12600.0 一月 => 110 = 2600.0 二月 => 88 = 2600.0 一月 => 110 = 3000。二月 => 88 = 3000.0 一月 => 110 = 5880.0 二月 => 88 = 5880.0 一月 => 110 = 7980.0 二月 => 88 = 7980.0 一月 => 110 = 9900.0 二月 => 88 = 9900.0 一月 => 110 = 10500.0 二月 = > 88 = 10500.0 一月 => 110 = 11340.0 二月 => 88 = 11340.0
【解决方案2】:

仅限一月份的这张支票

else if(months[x] <250)

是真的,但是这个检查也适用于 3 月、4 月、5 月、9 月、10 月、11 月和 12 月,因为在整个 months 数组上进行迭代,所以付款与最后一个元素相等从数组里面只少了250,也就是12月。所以付款是189*60

您需要累积付款或在while循环中打印付款

【讨论】:

    【解决方案3】:

    int 月[] = {110, 88, 125,168,210,65,75,98,133,165,175,189}; 字符串 m[] = {“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、 “十二月”}; int x,大小,计数,len; 大小 = 月。长度; len = m.长度; 双重支付=0;

    x= 0;
    count = 0;
    
    
      while (x<size && count<= len){
            if (months[x] <40){
              payment = months[x] * 20;
    
            }
            else if(months[x] <60){
              payment = months[x] * 30;
            }
            else if(months[x] <80){
              payment = months[x] * 40;
           }
           else if(months[x] <250){
             payment = months[x] * 60;
          }
    
          System.out.println(m[count] + ": "+ months[x] + " = " +payment);
          x++;
          count++;
    }
    

    // 谢谢你,我做到了... :)

    【讨论】:

      猜你喜欢
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      相关资源
      最近更新 更多