以下代码不会使用某些输入执行

时间:2015-05-29 10:26:11

标签: java

对不起这样一个基本问题的人。但我是编程的先驱。不是电脑的人。所以请帮助我。 在此代码中,当我提供输入10000000001000000000999999999时,答案应为4.但我的答案是1.我希望if语句可以执行,但它是不在这里执行。

如果你把m * n作为一个房间而且" a"作为正方形瓷砖的一面。然后我想要最低数量。填满房间地板所需的瓷砖。瓷砖可能会覆盖更多的区域,但不应该留空。这是我的目标。它使用像6,6,4或15,20,13等输入。

现在是工作人员。我已经在下面发布了正确的代码以及那些小的更改。

import java.util.Scanner;
public class TheatreSquare {
    private static Scanner input;
     public static void main(String[] args) {
     input = new Scanner(System.in);
     float m=input.nextFloat();
     float n=input.nextFloat();
     float a=input.nextFloat();
     long i=(int)(m/a);
     long j=(int)(n/a);

     if((a*a*i*j)<m*n){

        if(a*i<m){
            //to check weather it is entering if()
            System.out.println("true");
            i+=1;
        }
        if(a*j<n){
            System.out.println("false");
            //to check weather it is entering if()
            j+=1;
        }
       }
       System.out.println((double)(i*j));
     }
 }

4 个答案:

答案 0 :(得分:3)

当你将它们相乘时,你的花车会溢出。将mna定义为double将解决此问题:

double m = input.nextDouble();
double n = input.nextDouble();
double a = input.nextDouble();

答案 1 :(得分:2)

int转换失去精度。

在这种情况下,get_member_var_a等于a*a*i*j因此if循环不会执行。此外,m*n等于a*im等于n。 因此我isi和j是1,所以a*j是1。 Look at this

如果它也相同,你需要允许它去。 替换

i*j

<强>与

if((a*a*i*j)<m*n){

        if(a*i<m){
            //to check weather it is entering if()
            System.out.println("true");
            i+=1;
        }
        if(a*j<n){
            System.out.println("false");
            //to check weather it is entering if()
            j+=1;
        }
       }

答案 2 :(得分:2)

thankyou @Mureinik,@ Uma Lakshmi Kanth,@ Diego Martinoia帮助解决了这个问题。您的所有答案都有助于解决我的问题。这个现在正在运作。正如@Mureinik所说,我的花车溢出(虽然我不知道其含义)。我使用了Double而不是float,就是这样。它的工作。 : - )

dmesg

答案 3 :(得分:1)

您的行为的原因是您正在以浮动数字读取数字。浮点数的精度有限,因此m n和a的值相同(在运行时)。阅读它们(并摆脱所有小数的东西)应该有所帮助。但是,正如评论中所提到的,我们不知道你想要实现什么!

---由于新信息而编辑---

你必须覆盖面积为n平方米的面积。你有一个计算单位为1瓦,即一平方米(均假设为十进制)。

假设您可以用足够精确的方式切割瓷砖,结果将是:

Math.ceiling((m*n) / (a*a));

即,您的区域是您的瓷砖的精确倍数(并且您可以始终将它们切割成矩形以匹配房间的形状),或者您将有一些“备用”空间来填充,因此您将需要多一块瓷砖,其中一部分用于覆盖剩余空间,其中一部分将丢弃。