为什么我得到一个int数太大而long分配给min和max?
/*
long: The long data type is a 64-bit signed two's complement integer.
It has a minimum value of -9,223,372,036,854,775,808 and a maximum value of 9,223,372,036,854,775,807 (inclusive).
Use this data type when you need a range of values wider than those provided by int.
*/
package Literals;
public class Literal_Long {
public static void main(String[] args) {
long a = 1;
long b = 2;
long min = -9223372036854775808;
long max = 9223372036854775807;//Inclusive
System.out.println(a);
System.out.println(b);
System.out.println(a + b);
System.out.println(min); …Run Code Online (Sandbox Code Playgroud) 嗨,我很难理解为什么这不起作用
if(Long.parseLong(morse) == 4545454545){
System.out.println("2");
}
Run Code Online (Sandbox Code Playgroud)
莫尔斯只是一串数字.问题是它说Integer数字太大了:4545454545,但我确定Long可以比这长得多.
解决方案:
事实证明代码本身(可能)"没有错"; 这只是效率低下.如果我的数学是正确的,如果我让它继续运行它将在2011年10月14日星期五之前完成.我会告诉你的!
警告:如果您尝试解决Project Euler#3,这可能包含剧透.
问题是这样的:
13195的主要因素是5,7,13和29.
600851475143的最大主要因素是什么?
这是我尝试解决它.我只是从Java和编程开始,我知道这不是最好或最有效的解决方案.
import java.util.ArrayList;
public class Improved {
public static void main(String[] args) {
long number = 600851475143L;
// long number = 13195L;
long check = number - 1;
boolean prime = true;
ArrayList<Number> allPrimes = new ArrayList<Number>();
do {
for (long i = check - 1; i > 2; i--) {
if (check % i == 0) {
prime = false;
}
}
if (prime == true && number % check …Run Code Online (Sandbox Code Playgroud) public static void gramstoAtoms()
{
System.out.println("Enter Amount of grams");
Scanner keyboard = new Scanner(System.in);
long x = keyboard.nextLong();
System.out.println("Enter Unit Grams");
long y = keyboard.nextLong();
long result = x/y;
long answer = result*60200000000000000000000;
System.out.println(answer + "Atoms");
}
Run Code Online (Sandbox Code Playgroud)
如何更改此代码,以便我不会得到一个整数太长的错误?
这是我的代码:
public static boolean isPrime(long num)
{
for(long i=2; i<=num/2; i++)
{
if(num%i==0)
{
return false;
}
}
return true;
}
public static long findLargestPrimeFactor(long n)
{
long max=0;
for(long factor=2; factor<n; factor++)
{
if(n % factor==0)
{
if(isPrime(n/factor)==true)
{
max=factor;
}
}
}
return max;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,它表示整数600851475143太大了.谁能帮我?
我正在编写一个代码,我试图在long变量中赋值.但java编译器显示的错误是整数过大.我试图存储600851475143在long类型依然.
class Sum {
static public void main(String args[]){
long num=600851475143;
}
}
Run Code Online (Sandbox Code Playgroud) 我已经为我的问题取出了不相关的代码,并留下了与我的问题相关的内容.它表明整数太大了.我已将当前时间转换为毫秒,我试图以毫秒为单位添加一个月,两周和一周来实现"过期日期".如果有人知道如何使用Long而不是int?我很困惑,因为我的日期不是作为一个整数被宣布?
它表示'dateExpired = dateExpired + 2628000000;'的错误.
public class VIP implements Serializable {
private Date dateExpired;
public VIP(Date dateExpired) {
this.dateExpired = new Date(Calendar.getInstance().getTimeInMillis());
}
public Date getDateExpired() {
return dateExpired;
}
public void setDateExpired(String ticketType) {
if (ticketType.equals("Gold")) {
dateExpired = dateExpired + 2628000000;
} else if (ticketType.equals("Silver")) {
dateExpired = dateExpired + 1209600000;
} else {
dateExpired = dateExpired + 604800000;
}
}
}
Run Code Online (Sandbox Code Playgroud)