【问题标题】:Perfect square if,else [closed]完美的正方形 if,else [关闭]
【发布时间】:2013-01-17 10:48:43
【问题描述】:

完美方码遇到问题

import java.util.*;


public class perfectsquare {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

Scanner s= new Scanner(System.in); 
double number; 

System.out.println("Enter number >");

number= s.nextDouble();

System.out.println(Math.sqrt(number));





    }

}

使用 if,else 如何让它返回一个完美的平方,如 9=3 的 sqrt 但如果该数字的平方根是小数,例如 10 的平方根将是 3.122222,则返回 false .....

【问题讨论】:

  • 你对完美正方形的定义是什么?
  • 如果你想让我们做你的功课,至少要知道你想要什么返回类型。
  • @Cthulhu 返回类型Object ;)

标签: java


【解决方案1】:
import java.util.*;

public class perfectsquare {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner s= new Scanner(System.in); 
        double number; 

        System.out.println("Enter number >");

        number= s.nextDouble();
        double sqr= Math.sqrt(number);
        //System.out.println(sqr);
        double num=sqr;
        double x;
        x=num%1;
        x=num-Math.floor(num);
        if(x>0){
            System.out.println("False");
        }
        else{
            System.out.println(sqr);
        }
    }
}

这会起作用。

【讨论】:

  • 你的逻辑似乎有问题,我会这样做% 1
  • 在 java 中它不起作用。我是 Java 新手
  • 对不起,我不够清楚。之前,我说过 Java 双模操作没有很好的定义,但我收回了这一点。它们在 C 中没有很好地定义,但在 Java 中却很好地定义了。这不起作用的原因是您正在执行% 10 而不是% 1。您的语句将返回平方根是否有一个数字。 % 1 会告诉你它是否有小数,这是你想知道的。此外,您应该将您的 double num=sqr; if(num .... 更改为 if(sqr ....。没有理由在那里有一个辅助变量num
  • 是的,我编辑了它,这个程序现在可以运行了:)
  • 如果您格式化代码,这将更有帮助。谢谢。
【解决方案2】:

您可以将返回类型更改为Object(但您必须在使用该函数时使用instanceof检查它是否为数字)或返回-1而不是false

要查看它是否是一个完美的正方形,请使用:

if(Math.sqrt(number) % 1 == 0) {
    return number;
} else {
    return -1;
}

【讨论】:

  • 这不会返回上述海报所要求的内容。
  • 34 没有小数,也不是完美的正方形。
  • 我看到了编辑。它仍然没有回答 OP 的问题。
  • 这就是他所说的完美正方形:a perfect square like sqrt of 9=3 but false if the square root of that number is a decimal for example squareroot of 10 would be 3.122222.....
  • 你刚刚添加了那个。无论如何,如果它是一个完美的正方形,则OP指定true,如果不是,则指定false
【解决方案3】:
if(Math.round(Math.sqrt(number))==Math.sqrt(number)){
  //it is a perfect square
}

【讨论】:

  • if (Math.sqrt(number)==Math.sqrt(number)%1)
  • 您也可以使用Math.ceilMath.floor 或将sqrt 的截断乘以int 本身,看看它是否是原始数字(在转换为double 之后)。跨度>
  • ^ 这也可以,有很多方法可以解决这个问题,这只是我想到的第一个:P
猜你喜欢
  • 2016-08-26
  • 2010-12-05
  • 1970-01-01
  • 2022-08-23
  • 2016-12-26
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
相关资源
最近更新 更多