首页 > 解决方案 > 如何在 Java 中添加带有 int 变量的浮点变量?

问题描述

我是 Java 新手,所以我也在做一些练习。这个要求我拿到账单,获得利息,计算该账单的利息,然后退还账单加上利息。

这是代码:

import java.util.Scanner;
public class BillsAndInterest{
    public static void main(String[] args){
        double bill;
        System.out.println("How mutch is the bill payment? ");
           bill = new Scanner(System.in).nextDouble();
        
        System.out.println("What's the interest in this bill in per cent?");
           double interest = new Scanner(System.in).nextDouble();
        
        double interestCalculated = interest / 100 * bill;
           System.out.println("Your interest is " + interestCalculated + " dinheiros! \n So the amount is " + bill + interestCalculated + " dinheiros!");
    }
}

那么问题来了,如果我的账单是 100 dinheiros,利息是 25,那么 bill + interest 一定是 125,但是代码返回100.025.0 dinheiros!

我尝试更改double interestCalculatedint interestCalculated,但出现此错误:
BillsAndInterest.java:15: 错误:不兼容的类型:可能有损从 double 转换为 int int interestCalculated = interest / 100 * bill; ^ 1 个错误
有人可以帮我吗?是否有一些我应该寻求帮助的特定课程?

标签: javavariables

解决方案


问题在于声明:

System.out.println("Your interest is " + interestCalculated + 
   " dinheiros! \n So the amount is " + 
   bill + interestCalculated + " dinheiros!");

to 的参数System.out.println是一堆由+运算符连接的文字和变量。在没有任何括号的情况下,+操作只是按从左到右的顺序计算,就好像语句已经写成:

String $T1 = "Your interest is " + interestCalculated;
String $T2 = $T1 + " dinheiros! \n So the amount is ";
String $T3 = $T2 + bill;                   // String + number = String
String $T4 = $T3 + interestCalculated;     // String + number = String
String $T5 = $T4 + " dinheiros!";
System.out.println($T5);

当然,您想要的是将总和相加,bill然后interestCalculated将该总和合并到整个字符串结果中,更像是这样:

String $T1 = "Your interest is " + interestCalculated;
String $T2 = $T1 + " dinheiros! \n So the amount is ";
double $T3 = bill + interestCalculated;     // number + number = number
String $T4 = $T2 + $T3;                     // String + number = String
String $T5 = $T4 + " dinheiros!";
System.out.println($T5);

强制执行该评估顺序的一种方法是在 周围添加括号bill + interestCalculated

System.out.println("Your interest is " + interestCalculated + " dinheiros! \n So the amount is " + (bill + interestCalculated) + " dinheiros!");

另一种选择是在单独的变量中计算总数并在字符串表达式中使用该变量:

double totalAmount = bill + interestCalculated;
System.out.println("Your interest is " + interestCalculated + " dinheiros! \n So the amount is " + totalAmount + " dinheiros!");

还有第三个选项,您可能会更喜欢:

System.out.printf(
    "Your interest is %.2f dinheiros! %n So the amount is %.2f dineheiros!%n", 
    interestCalculated, 
    bill + interestCalculated);

阅读更多关于printf 这里


推荐阅读