• ベストアンサー

javaの実行時のエラー

javaを使って圧縮プログラムを作ったのですがコンパイルは通るのに実行時に Exception in thread "main"java.lang.StringIndexOutOfBoundsException: String index out of range: 80 at java.lang.String.charAt(String.java:455) at ashuku.char1(ashuku.java:51) at ashuku.kensa1(ashuku.java:23) at ashuku.main(ashuku.java:9) というエラーが出ます。このエラーの意味は何なのですか?教えてください。プログラムが長くて載せられないので、このエラーが出たときに何をチェックすればいいか教えてもらえると助かります。お願いします

  • Java
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

java.lang.StringクラスのcharAt()メソッドで、例外StringIndexOutOfBoundsExceptionが発生しています。 つまり、文字列長が80以下にもかかわらず、charAt(80)として指定しているためにインデックスの範囲外という例外が発生します。 char1()がどんな引数を使用するのかはわかりませんが、ashuku.javaでchar1()を使用している個所に、以下のようにtry~catchで例外発生時の対処をするとよいでしょう。 try {   char1(); // 引数はわからないので } catch (StringIndexOutOfBoundsException e) {   e.printStackTrace(); } ※ インデントは全角スペースを使用したので、半角スペースに置きかえること。 また、char1()の中でcharAt()を使用する前に、以下のように文字列長を確認するデバッグ文を挿入して文字列長を確認するとよいでしょう。 System.out.println("str.length() = " + str.length()); // 対象文字列はstr

参考URL:
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/String.html#charAt(int)
shosin
質問者

お礼

参考URL見るのを忘れてエラーの意味だけを見てやってみてできなかったので、補足にまた質問してしまいましたが、URLみたら-1つけていないことに気づき直したところできました。どうもありがとうございました。補足に書いてあることはなかったことにしてください。すみません。

shosin
質問者

補足

ありがとうございます。回答にあるエラーの意味を見て、プログラムを見たところ、charを使ってi番目の文字とi+1番目の文字を取り出し同じかどうかを比較しているところでi=79まできたとき80番目がなく取り出せないことがわかりました。char1メソッドでi番目とi+1番目の文字を取り出しStringに変えて比較を行うためのメインになるメソッドに返しており、メインになるメソッドは帰ってきた値を比較しwhile文で値が異なるまで繰り返しをしているのでi=79のとき例外で帰ってきた値が異なるようにしなくてはいけないのですがi=79のときになにをreturnすればいいのかわかりません。 カテゴリを間違えたので直し方も教えてもらいたいです

関連するQ&A

  • Java実行でのエラー

    Javaを勉強したいのでインストールしてみたところまでは良かったのですがコンパイルを通した後に実行すると動きません。 CLASSPATH:c:\Java JavaファイルがJavaフォルダの中に入っている状態です。 【手順】 c:\Java>java HelloJava.java ↓コンパイル成功 c:\Java>java HelloJava Exception in thread "main" java.lang.NoClassDefFoundError: HelloJava というエラーが出てJavaを実行できません。 エラーの内容がわかる方はがいらっしゃれば教えて頂きたいです。

    • ベストアンサー
    • Java
  • JAVAの実行ができません

    駄文で申し訳ありません。 シリアル通信を行うプログラムを実行したいのですが、コンパイルはできるのですが、実行すると下記のエラーがでます。プログラムはC:\commapi\samples\SerialDemo内にあり、環境変数もきちんと設定しているつもりなんですが、実行ができません。 なぜでしょうか?JAVAに詳しい方ご教授下さい。 C:\commapi\samples\SerialDemo>java SerialDemo Exception in thread "main" java.lang.NoClassDefFoundError: javax/comm/CommPortId entifier at SerialDemo$ConfigurationPanel.listPortChoices(SerialDemo.java:560) at SerialDemo$ConfigurationPanel.<init>(SerialDemo.java:448) at SerialDemo.<init>(SerialDemo.java:142) at SerialDemo.main(SerialDemo.java:89)

    • ベストアンサー
    • Java
  • jdk1.3で実行すると・・・

    jdk1.3でコンパイルし実行すると Exception in thread "main" java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:385) at java.awt.GridBagLayout.setConstraints(GridBagLayout.java:357) at rei008.<init>(rei008.java:144) at rei008.main(rei008.java:20) というメッセージが出てプログラムが実行できません。 なぜなんでしょうか?宜しくお願いします。

    • ベストアンサー
    • Java
  • 実行時に出るエラーの意味が解りません

    Javaで、「SystemFont 」というクラス名をつけて プログラムを組み、コンパイルしてその後実行したところ Exception in thread "main" java.lang. NoClassDefFoundError:SystemFont というエラーが表示されるだけで実行できません。 このエラーの示す意味をどなたか教えて頂けませんか?

    • ベストアンサー
    • Java
  • エラーが消えません

    Exception in thread"main"java.lang.ArrayIndexOutOfBoundsException at PortOpener.main(PortOpener.java:106) って何なんでしょう? プログラムのエラーがいつもわけがわかりません。 どこかにそういうのが載っているところを知っている人教えてください.

    • ベストアンサー
    • Java
  • javaの実行エラーです

    Javaのソースファイルをコンパイルまでしました。Classファイルもできています。 実行すると、下記のエラーです。 Exception in thread "main" java.lang.UnsupportedClassVersionError: Hello (Unsupported major.minor version 50.0) よろしくお願いします。

  • Javaの実行エラーが起きます。

    Javaの実行エラーが起きます。 Exception in thread "main" java.lang.UnsatisfiedLinkError: no nativetimer in java.library.pathの解決方法 現在、大学で研究をしており、その関係でネットからひろったJavaのプログラムを動かそうとしているのですが、実行すると上記のようなエラーにより実行できずに困っています。eclipseを使っています。何か解決方法があれば、教えてください。

    • ベストアンサー
    • Java
  • java実行時のメッセージについて

    50歳にてjavaを勉強しようとしているものです。 javaの本より例題を作成してみたのですが、うまくいきません。 javaをインストールしてjavacが正常でいざ実行した際、以下のメッセージが表示されました。何の意味かさっぱりわかりません。このサイトで質問するレベルではないかと思いますが、アドバイスいただければ幸いです。 作成したプログラムは class hello { public static void main(String[] args) { System.out.println("こんにちは"); } } javac ではエラー表示なし → C:\javabook\part1>javac Hello.java C:\javabook\part1> これを実行すると、 C:\javabook\part1>java Hello Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong name: he llo) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 1) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: Hello. Program will exit. と表示されます。 何がエラーとなっているのでしょうか?

    • ベストアンサー
    • Java
  • JAVA実行時エラーについて教えてください

    JAVAを最近になって始めた初心者です。 コンパイルは問題なく終了するのですが、実行時に Exception in thread "main" java.lang.NoClassDefFoundError:HelloWorld(Unsupported major.minor version 49.0)    at java.lang.ClassLoader.defineClass0(Native Method)    at java.lang.ClassLoader.defineClass(Unknown Source) と表示されます。実際には at java.~ 以降にも複数行文字が表示されています。(全部で12行です) ソースファイル及びクラスファイルの格納先は c:\java\HelloWorld.java c:\java\HelloWorld.class ソースは以下の様に記述しました。 class HelloWorld { public static void main(String args[]) { System.out.println("HelloWorld"); } } 1)過去ログから“環境設定のクラスパス”及びコマンドプロンプトで “java -cp. HelloWorld”を確認しました。そうすると以下のようなメッセージが表示されます。 Unrecognized option: -cp. Could not create the Java virtual machine. 2)システム環境変数の“PATH”は以下のように記述しております。 ;C:\Program Files\Java\jdk1.5.0_07\bin 3)システム環境変数の“CLASSPATH”は指定しておりません。というより、指定しても現象は変わりませんでした。 ご教授願えないでしょうか。宜しくお願い致します。

    • ベストアンサー
    • Java
  • java

    コンパイルできても、実行ができません。 次のようなエラーがでます。 このエラーはどのようなエラーなのでしょうか? Exception in thread "main" java.lang.NoClassDefFoundError: test コードはただたんにHello JAVA と表示させるだけです。 class Test{ public static void main(String args[]){ System.out.println("Hello Java\n"); } }

    • ベストアンサー
    • Java

専門家に質問してみよう