• ベストアンサー

整数xxxが大き過ぎますというエラーメッセージ(Java)

最近javaを始めた者です。 javaの初歩的なプログラミングなのですが、long型の変数を定義して例えば10個の数字1234567890をその変数に代入してやるとエラーなくコンパイルされるのですが、 11個以上の数字、例えば12345678900を代入してコンパイルしようとすると質問タイトルのようなエラーメッセージが表示されてしまいます。 long型の変数を使えば11個の数字なら問題なく代入できると理解しているのですが、これは間違っているのでしょうか。 エラーがでる理由がわからなくて困っています。このエラーについて、また、どのようにすれば11個以上の数字が代入できるのか教えてください。お願いします。

  • LKLK
  • お礼率96% (29/30)
  • Java
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

12345678900Lのように最後にLを付けてリテラルがlongであることを明示しましょう。 数字だけ並べたリテラルはint型です。従ってint型に入らないような大きなリテラルは数字だけ並べたのでは表現できません。

LKLK
質問者

お礼

ありがとうございました。おかげさまでできました。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

12345678900L のようにする必要があります

LKLK
質問者

お礼

ありがとうございました。できました。

回答No.1

どこかでそれをintにしようとしたりしてるんじゃね? longの範囲は-9223372036854775808 ~ 9223372036854775807 よねぇ。

LKLK
質問者

お礼

ありがとうざいました。No2の方とNo3の方の通りやったらできました。

関連するQ&A

  • Java初体験です。

    Javaを勉強しようと思い、本を買ってやってみました。コンパイルは成功したのですが、実行でエラーが出てしまいます。そのエラーメッセージは『Exeption in thread "main" java.lang.NoClassDefFoundError : Sample』です。環境変数はちゃんとテキスト通りやりました。1つミスをしたところは間違えてシステム環境変数の「Path」の値を変えてしまったことです。元々の値がわかりません。どなたか、エラーの原因及び「Path」の値に何を入れればいいか教えてください。

    • ベストアンサー
    • Java
  • Javaわからない

    この問題で質問です。 Javaです 2行目に引数ありのコンストラクタを定義してるから、デフォルトコンストラクタが追加できなくてコンパイルエラーになるという解釈でいいですか?

    • ベストアンサー
    • Java
  • エラー解決方法が分かりません。。

    こんにちは、私は最近JAVAプログラミングを始めたのですが、コマンドプロンプトでコンパイルを無事に終えたあと、クラスファイルを指定して実行しようとすると必ず「Exception in thread "main" java.lang.NoClassDefFoundError: Hello」と表示されて実行できません。他サイトで調べたところこのエラーはHello.classの場所が分からないというものだということまで分かったのですが、解決策がよく理解できませんでした。あらかじめ環境変数のpathを変更して行っているんですが、コマンドプロンプトでどのように入力したらエラーが無くなるでしょうか?ご助言よろしくお願いします。

    • ベストアンサー
    • Java
  • N88互換BASICで「メッセージの定義されてないエラーです」と出ます

    N88互換BASICで「メッセージの定義されてないエラーです」と出ます… 最近プログラミングを始めた初心者です。 プログラムでエラーが出て困っています、どこが問題なのか改善方法を教えてください。 10 DIM A(100,100,100) 20 INPUT "B=";B 40 FOR i=1 to 100 step 1 50 FOR j=1 to 100 step 1 60 FOR k=1 to 100 step 1 70 A(i,j,k)=B 80 print A(i,j,k) 90 NEXT k 100 NEXT j 110 NEXT i こんな感じのものです。 配列変数を作って、Bの数値を全ての配列変数に代入したいです。 宜しくお願致します。

  • シンボルを見つけられませんというエラーでコンパイルできない

    こんにちは。 Test.javaとTest2.javaというファイルを作りコンパイルしようとしたんですがタイトルのエラーが出てコンパイルできません。全く意味が分からなくて困ってます。 test.javaの中で Test2 test2 = new Test2(); という形でTest2クラスのインスタンスを生成しています。 同じフォルダの中にあるのに見当たらないというのはどうにも分かりません。 環境変数は CLASSPATH . PATH C:\Program File\Java\jdk1.5.0_06\bin となってます。

    • ベストアンサー
    • Java
  • 重複エラーを解決するには

    こんにちは。 次のようなエラーが出て困っています。 ”パッケージ名.Canvasクラスの定義が重複しています。  すでにCanvas.javaと○.javaで定義されています。” そこで、 1,現在コンパイルしているファイルで、Canvas.java   と○.javaでの定義が重複しているのかを確認しました。   しかし、その二つのファイルが、現在コンパイルしているファイル自身でした。 2,Canvas.javaと○.javaのプログラムの中身を見ました。   しかし、Canvasクラスを定義していたのは片方だけでした。 3,このエラーが出るようになる前に行った作業(一度、Canvas.javaを削除して   再び作成し直した)ことが原因で、どこかにbackupfileが作成されてしまった。 →解決できず JBuilderを使っています。どうしたら解決できるのか、教えて下さい。お願いします。

    • ベストアンサー
    • Java
  • メソッドは値を返さないというエラー?

    お世話になります。 JAVAでプログラミングを始めたものですが、本を参考にコーディングしてコンパイルするとエラーになってしまいます。考え方がダメなのか何か足りないのか良く分かりません。 private long longValue(String A,long def) {   long val = def;   try {    if (A != null && !A.equals(""))      val = Long.parseLong(A);   }   catch (NumberFormatException e) {     return val;   } } エラーは、method dose not return a valueです。

    • ベストアンサー
    • Java
  • 文字列や文字から整数への変換方法について

    文字列(string型)や文字(char型)から整数(int型など)に変換 する時のルールがよく解りません。 たとえば、キーボードから数字を打って、その入力された数字を 数値として整数型の変数に代入したい場合のやり方です。 ちょっとプログラムを作ってみました。 using System; class clmain { private static void Main() { Console.Write("1桁の整数を入れてね "); char ch = char.Parse(Console.ReadLine()); int by1 = (int)ch; int by2 = (int)char.GetNumericValue(ch); Console.WriteLine("by1 = {0}, by2 = {1}, ch = {1}", by1, by2, ch); Console.Write("整数を入れてね "); string st = Console.ReadLine(); /* by = (int)st; コンパイルエラー */ int by3 = int.Parse(st); Console.WriteLine("by3 = {0}, st = {1}", by3, st); } } まず、char型からint型への変換では、  int型変数=(int)char型変数; はコンパイルは通りますけど、実行すると全く違った値が入って しまいます。たとえば char型変数の値が "1" だと、int型変数には 49 が入ります。 int型変数 = (int)char.GetNumericValue(char型変数); と書いてようやく、思い通りの動きをしてくれます。 また、string型からint型への変換では  int型変数=(int)string型変数; はコンパイルエラーになります。 int型変数 = int.Parse(string型変数); とするとコンパイル出来て正しく動きます。 これで質問ですけど、 (1)なぜstring型とchar型で、int型への変換方法が違うのでしょうか? (2)int型変数=(int)char型変数; とすると、上に書いたように、全く 違った(希望しない)値が代入されてしまいます。これは、どういう 動きをしているのでしょうか? また、これはコンパイルエラーに なりませんけど、どういう時にこの書き方をするのでしょうか? 解る方、お願いします。

  • Strutsのエラー?それともサーブレット?

    いつもお世話になっております。 またまた質問させてください。 ・Windows2000 ・j2sdk-1_4_1_07-windows-i586 ・jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49 ・struts-1.2.7 で http://www.hellohiro.com/struts.htm を参考に勉強中です。 それぞれファイルを作成し、環境変数を設定して SendMessageForm.java と SendMessageAction.java をコンパイルしましたが、 注: .\javahello\SendMessageForm.java は推奨されない API を使用またはオーバーライドしています。 注: 詳細については、-deprecation オプションを指定して再コンパイルしてください。 と出てきますが、クラスファイルはできています。 このエラーが出てきてもそのまま使えるとの情報があったので、とりあえず先に進み ・struts-config.xml)の編集 ・(ApplicationResources.properties)の編集 及び ASCIIファイルに変換 の作業を行いました。 しかし、http://localhost:8080/javahello/sendMessage.jsp を開くと javax.servlet.ServletException: キー "sendMessage.title" に対応するメッセージが見つかりません               ・               ・               ・ javax.servlet.jsp.JspException: キー "sendMessage.title" に対応するメッセージが見つかりません               ・               ・               ・ とHTTP Status 500 - がかえってきます。 ・コンパイルをきちんと通せてないのがいけないのでしょうか? それとも ・Strutsの設定がよくないのでしょうか? 初歩的な質問なのでしょうが、どうしても前に進むことができずに困っています。 どなたがご教授のほどお願いいたします。

    • ベストアンサー
    • Java
  • javac のエラーメッセージについて

    初めまして。java初心者ですよろしくお願いします。 MS-DOSプロンプトを動かしjavac ファイル名.javaとコマンドすると、"This program cannot be run in DOS-MODE."というエラーメッセージが表われます。過去の回答の中にあったPATHの指定もすべて行いました。それでも上記のメッセージが出てコンパイルできませんでした。 OSは98SecondEditionを使用しています。 どなたか、このエラーメッセージの原因と解決方法をご存知の方がいらっしゃればお答えをお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう