问题:我无法存储号码“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;
}
}
解决方案:正如吉姆在下面所说,为了长型,必须在数字末尾加上“L”或“L”。“如果整数文字以字母L或L结尾,则为long类型;否则为int类型。建议使用大写字母L,因为小写字母L很难与数字1区分。”-来自Oracle Primitive类型网站。
更多信息:Java的L数(长)规范
“我的程序没有将变量“数字”注册为长,而是将其注册为int”。
这是不正确的。你宣布它是一个长。很长。
您一定会得到完全不同的结果:常量600851475143上的编译错误。试试600851475143L。我建议如果您更仔细地阅读编译器错误消息,您会看到这一点。
在此文字值中放入一个小“L”:
600851475143L
原因是:
如果整数文字以字母L或L结尾,则它属于long类型;否则它的类型是int。建议您使用大写字母L,因为小写字母L很难与数字1区分开来。
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
您也可以使用此符号,以便更清楚:
600_851_475_143L
长文本需要用尾随的“L”表示,如600851475143L
是否可以只使用一行代码就将输入变量的数据类型(可以是任何基元类型,int、bool、float、double)作为字符串返回?我知道对于字符串类型,使用和可以很容易地做到这一点,但我不确定如何使用这些方法返回基元类型的类型。我还想保持我的代码非常简短,最好只用一行。 我到处找了找,找不到任何地方,这个问题已经以我要求的方式得到了回答。
问题内容: 如果有Wrapper类使Java成为纯面向对象的语言,那么为什么会有可在Java中使用的Primitive数据类型呢? 问题答案: 为了效率。基本类型的变量直接包含值。非基本类型的变量是引用,引用存储在内存中其他位置的对象。 每次您需要使用包装器类型的值时,JVM都需要在内存中查找对象以获取该值。对于原始类型,这不是必需的,因为变量本身包含值,而不是对包含该值的对象的引用。 但是,这不
问题内容: 我是Kotlin的新手,正在玩数据类型。我选择了一个类型,然后尝试通过说来将其强制转换为a ,这在Java中是有效的(从语法上讲,但这是正确的)。但是,此操作失败,表示无法将Int强制转换为Double。我假设这是因为它是基于Integer类而不是原始的int数据类型构建的。我是正确的,最有价值的方法是什么?有一个功能,但这似乎效率低下且笨拙。 问题答案: 我花了一个类型,然后试图将它
问题内容: 声明任何原始类型的数据(例如int或)时,它们会初始化为或。为什么我们不能将它们设置为? 问题答案: 基本类型就是数据。另一方面,我们称为对象的对象只是指向数据存储位置的指针。例如: 在这种情况下,它只是指向一个整数对象的指针,该对象的值恰好是3。也就是说,在存储变量对象的内存位置,你所拥有的只是对数据实际位置的引用。number另一方面,存储的存储位置直接包含值3。 因此,你可以将设
当声明任何基本类型数据(如< code>int或< code>double)时,它们被初始化为< code>0或< code>0.0。为什么我们不能将它们设置为< code>null?
问题内容: 在Java中,我们可以直接用于声明字符串变量名称并指定其值。即使String是非原始数据类型,也不必通过使用new关键字将字符串定义为数组。 有人可以解释为什么String是非原始数据类型吗? 问题答案: 这是字符串文字。像这样声明字符串时,实际上是在String上调用intern()方法。此方法引用内部字符串对象池。如果已经存在一个字符串值“ This is stringlitera