基本实践应用程序输出。JAVA 尝试这样做:。

基本实践应用程序输出。JAVA 尝试这样做:。,java,optimization,floating-point,Java,Optimization,Floating Point,当我自己测试它时,它似乎工作得很好,但当我上传代码时,我被标记为不正确(程序运行,但输出不正确-没有进一步的信息) 它所做的就是获取两个输入,with和bal,并检查with 5%=0&&bal>=with+0.5。 如果两个条件都为真,则返回bal-(带+0.5) 还有没有更有效(更快的代码执行)的方法 import java.util.Scanner; class ATM { public static void main(String[] args){ Scann

当我自己测试它时,它似乎工作得很好,但当我上传代码时,我被标记为不正确(程序运行,但输出不正确-没有进一步的信息)

它所做的就是获取两个输入,with和bal,并检查
with 5%=0&&bal>=with+0.5
。 如果两个条件都为真,则返回
bal-(带+0.5)

还有没有更有效(更快的代码执行)的方法

import java.util.Scanner;

class ATM {
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        final float with=in.nextFloat();
        final float bal=(float) ((in.nextFloat())-(with+0.5));
        if (bal>=0 && with%5==0){
            System.out.print(bal);
        }
    }
}

我建议自动加载器在您的输出结尾处有一个新行,即
println()
vs
print()

但正如上面@Steinar所指出的,应该是这样的:

System.out.println(String.format("%.02f", bal));

我建议自动加载器在您的输出结尾处有一个新行,即
println()
vs
print()

但正如上面@Steinar所指出的,应该是这样的:

System.out.println(String.format("%.02f", bal));

输出不正确,精度不正确。明确规定需要两位数字,并且您的输出与示例中的预期不同:

输入:

30 120.00
预期产出:

89.50
你的产出

89.5

编辑:第二次测试也可能失败,因为如果取款不是5的倍数,则不会输出任何内容。应在不提取任何余额的情况下输出余额。

输出不正确,其精度错误。明确规定需要两位数字,并且您的输出与示例中的预期不同:

输入:

30 120.00
预期产出:

89.50
你的产出

89.5

编辑:第二次测试也可能失败,因为如果取款不是5的倍数,则不会输出任何内容。预计将在不提取任何款项的情况下输出余额。

顺便说一句,我建议您使用double而不是floatsDouble。货币值不应使用double。您是否可以编辑您的帖子并粘贴最近的代码,您尝试过,但得到了错误的答案。当余额无效或取款金额不正确时,您也没有打印输出。如果你在codechef上提交代码,也可以使用将类名更改为Main。顺便说一句,我建议你使用double而不是floatsDouble。不应该将double用于货币值。你可以编辑你的帖子并粘贴最近的代码吗?你尝试了,但得到了错误的答案。当余额无效或取款金额不正确时,您也没有打印输出。如果您在codechef上提交代码,还可以使用将类名更改为Main。