【问题标题】:conditional statement using data types使用数据类型的条件语句
【发布时间】:2015-07-03 11:20:13
【问题描述】:

只是好奇有没有办法设置一个 if 语句条件来检查值是否等于数据类型。比如 if (x=int) 之类的东西。

我想创建一个检查素数的程序,但除了将数字(由用户输入)除以积木编号(2-9(不包括 1,因为所有数字都是可整除 ...)),如果它们都返回一个浮点数,那么这个数字是素数。

我也认为这种方式效率低下,但我也没有任何其他线索我将如何做到这一点。因此,如果可能的话,一些想法也会奏效。

这是代码的结构:

package innocence;
import java.util.*;

    class GS1
    {

            public static void main(String[]args)
             {
                Scanner input = new Scanner(System.in);  
                double num;
                System.out.println("Enter a number to check if it is prime or not");
                num=input.nextDouble();


                if((num % 2 == float) || (num % 3== float) || (num % 4 == float)|| (num % 5 == float)|| (num % 6 == float)|| (num % 7 == float)|| (num % 8 == float)|| (num % 9 == float) ) // float returns an error but i want to do it so it checks if it is a float or not
                   {
                      System.out.println("The number you haver entered," + num + "is a prime number");
                   }        

                else
                   {
                  System.out.println("The number entered is not prime");
                   }

            }
    }  

【问题讨论】:

  • 余数永远不会是float
  • 我通常做的是将数字与“四舍五入”的数字进行比较。看看 Math.round()。
  • @ElliottFrisch 如果你的意思是:%double 的操作永远不会有类型 float:是的。但是Math.PI % 3 返回一个小数。
  • @Jayden Freh 我的意思是,您不必检查余数是否是浮点实例(即使是,它实际上可能包含一个整数)。您应该做的是 x==Math.round(x) 或 x==(int)x 之类的操作,以便确定 x 是否为整数。最后考虑使用循环进行连续比较 =)

标签: java if-statement type-conversion


【解决方案1】:

您可以检查数字是否等于四舍五入到最接近整数的数字:

public static boolean isInteger(double n) {
    return n == Math.round(n);
}

if(!isInteger(num % 2) && !isInteger(num % 3) && !isInteger(num % 4) &&
   !isInteger(num % 5) && !isInteger(num % 6) && !isInteger(num % 7) &&
   !isInteger(num % 8) && !isInteger(num % 9) )
   {
      System.out.println("The number you haver entered," + num + "is a prime number");
   }        

else
   {
  System.out.println("The number entered is not prime");
   }

当然,如果这并不能真正检查数字是否为素数;它只检查数字是否能被整数 2 到 9 整除。

【讨论】:

  • 非常感谢。我不太了解它,因为我最近开始使用 java 并试图挑战自己(我猜使用了一种低效的数学方式)。我要去研究积分什么的。
  • 如果输入的数字实际上是一个整数,例如13.0,然后将始终打印 Not Prime。它只是将一个整数传递给integral,然后检查它是否四舍五入。
  • @Windle 正如我所说,我没有调整他的错误逻辑。我只看了他想检查%操作的结果是否为小数的部分。 13.0 % 2 = 1.0 所以它不是小数。我猜他应该检查的至少是(num % 2 == 0),但是整个逻辑对于检查素数来说远非正确。他应该为此使用筛子。
  • @ErwinBolwidt 够公平的。重命名为isInteger 也有帮助;有点担心他会为此尝试学习积分 =)
猜你喜欢
  • 2019-09-26
  • 2021-09-29
  • 1970-01-01
  • 2023-03-10
  • 2019-12-22
  • 2014-11-09
  • 2021-06-19
  • 1970-01-01
  • 2020-10-27
相关资源
最近更新 更多