1
  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");
  }

integer is too long エラーが発生しないように、このコードを変更するにはどうすればよいですか?

4

4 に答える 4

7

long の代わりに BigInteger を使用するだけです

BigInteger bi=new BigInteger("6020000000000000000000");

あなたの方法のために:

public static void gramstoAtoms()
  {
   System.out.println("Enter Amount of grams");
   Scanner keyboard = new Scanner(System.in);
   String x = keyboard.nextLine();
   System.out.println("Enter Unit Grams");
   String y = keyboard.nextLine();
   BigInteger result = new BigInteger(x).divide(new BigInteger(y));
   BigInteger answer = result.multiply(new BigInteger("60200000000000000000000"));
   System.out.println(answer + "Atoms");
  }

およびが小さい場合はxy単純な long で使用できますが、602.......0000 を掛けるときは、BigInteger

于 2013-05-09T13:00:55.637 に答える
3

私の記憶が正しければ、アボガドロの数は6.02e24です。Alongの最大値は で9,223,372,036,854,775,807、十分な大きさではありません。が必要BigIntegerです。

于 2013-05-09T13:01:01.437 に答える
1

これは、次のないソリューションBigIntegerです。

long answer = result * 602;
System.out.println(answer + "00000000000000000000Atoms");
于 2013-05-09T13:13:07.623 に答える
0

Dima Goltsman は正しいです。BigInteger を使用して修正する必要がありました

于 2013-05-09T13:21:49.710 に答える