谁能向我解释一下?[复制]

Can Anyone Explain This to Me? [duplicate]

提问人:Samar Khan 提问时间:8/27/2023 最后编辑:HolgerSamar Khan 更新时间:8/29/2023 访问量:70

问:

我是 java 的新手,一直在学习中尝试不同的东西,但最近我遇到了这个错误

error: cannot find symbol

我已经在谷歌上搜索了答案,但我仍然无法完全掌握问题及其解决方案。也许这里更有经验的人可以帮助我。

这是我一直在尝试运行的代码:

public class simple
{
    public static void main(String arg[])
    {
        BigInteger largeValue= new BigInteger(Integer.MAX_VALUE +1);
        for( int i=0; i < 4 ; i++)
        {
            System.out.println(largeValue);
            largeValue = largeValue.add(BigInteger.ONE);   
        }
    }
}

这是我遇到的错误:

simple.java:5: error: cannot find symbol
                BigInteger largeValue= new BigInteger(Integer.MAX_VALUE +1);
                ^
  symbol:   class BigInteger
  location: class simple
simple.java:5: error: cannot find symbol
                BigInteger largeValue= new BigInteger(Integer.MAX_VALUE +1);
                                           ^
  symbol:   class BigInteger
  location: class simple
simple.java:9: error: cannot find symbol
                        largeValue = largeValue.add(BigInteger.ONE);
                                                    ^
  symbol:   variable BigInteger
  location: class simple
3 errors
Java 变量 编译器错误

评论

3赞 rzwitserloot 8/27/2023
在 java 中,类型具有完全限定的名称。例如,它是 ,而不仅仅是 .输入的内容很多,所以 java 有一个专门用于类型的别名系统:你坚持在顶部,它什么都不做,除了说:无论我在这个文件中的哪个位置输入需要类型的地方,假设我的意思是输入 .你没有这样做 - 所以 java 不知道到底是什么。字符串之所以有效,是因为所有 java 文件的顶部都有一个静音。因为规范是这么说的。java.math.BigIntegerBigIntegerimport java.math.BigInteger;BigIntegerjava.math.BigIntegerBigIntegerimport java.lang.*;

答:

1赞 Jesus Rosales 8/27/2023 #1

该代码利用 BigInteger 类来处理大型整数值。它不是直接尝试从 Integer.MAX_VALUE + 1 创建 BigInteger,而是首先将 int 的最大值转换为字符串,然后从该字符串构造 BigInteger。然后,在 for 循环中,代码使用 add(BigInteger.ONE) 方法将 largeValue 的值逐渐递增 1,并在每次迭代中打印它。这可确保 BigInteger 正确处理数字,并防止由于值溢出而导致的错误。 Ejemplo:

   import java.math.BigInteger;

public class Simple {
    public static void main(String[] args) {
        BigInteger largeValue = new BigInteger(Integer.toString(Integer.MAX_VALUE)).add(BigInteger.ONE);
        for (int i = 0; i < 4; i++) {
            System.out.println(largeValue);
            largeValue = largeValue.add(BigInteger.ONE);
        }
    }
}

评论

1赞 Holger 8/28/2023
没有必要绕道而行。而不是你可以使用 .或者你用(介意)替换整个。Stringnew BigInteger(Integer.toString( Integer.MAX_VALUE))BigInteger.valueOf(Integer.MAX_VALUE)new BigInteger(Integer.toString(Integer.MAX_VALUE)).add(BigInteger.ONE)BigInteger.valueOf(Integer.MAX_VALUE + 1L)L