Java 误认为原始数据类型?

标签 java types primitive

问题:我无法存储数字“600851475143”。我意识到这个数字大于 int 可以容纳的数字并且小于最大 long 值。但是,我的程序没有将变量“number”注册为 long,而是将其注册为 int。有人可以阐明这个问题吗?

** - 问题所在

public class Problem3{
//What is the largest prime factor of the number 600851475143
public static void main(String[] args){
  ***long number = 600851475143 , total = 0;
    for(long x = (number-1)/2; x>1; x--)
      if(number%x == 0 && isPrime(x)) total += x;
    System.out.println(total);
}
private static boolean isPrime(long determine){
  for(long x = determine/2 - 1; x>1; x--)
    if(determine%x ==0) return false;
  return true;
}

解决方案:正如吉姆在下面所说的,为了输入 long 类型,必须在数字的末尾加上“L”或“l”。 "一个整型字面量,如果以字母L或l结尾,则为long类型;否则为int类型。建议使用大写字母L,因为小写字母l与数字1难以区分” - 来自关于原始类型的 Oracle 站点。

更多信息: Java's L number (long) specification

最佳答案

长字面值需要在尾部加上“L”表示,如600851475143L

关于Java 误认为原始数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10559860/

相关文章:

grails - Groovy 中的编译时检查

c# - 在同一方法签名中的函数的 TIn 的扩展方法中使用此类型参数的类型

java - 为什么 Java 中的自动装箱允许我有 3 个可能的 boolean 值?

java - 从字符串中获取原始数字类型的类

types - 内在类型与原始非内在类型

java - 从整数中删除第 n 个数字而不转换为字符串

java - 如何在@Backoff中的delayExpression中进行算术运算(Spring-retry)

java - Spring Integration - 队列 channel +服务激活器轮询器耗尽线程池

java - Android 注释在库项目中不起作用

javascript - JavaScript 数组初始化之前的 "var"指的是什么,是列表的元素还是数组本身?