2016-12-07 12 views
-2

ここに私のコードです。範囲外の文字列インデックス:java.lang.String.charAtで0 (String.java:658スレッド "メイン" java.lang.StringIndexOutOfBoundsExceptionでjavaの "String index out of range"のようなエラーが発生する理由は何ですか?

import java.io.*; 
import java.util.*; 

public class Solution { 

    public static void main(String[] args) { 

     Scanner scan=new Scanner(System.in); 

     String s; 


     int i; 
     int f=1,c,t=scan.nextInt(); 


     for(int j=0;j<t;j++) 
      { 

      s=scan.nextLine(); 
      scan.close(); 
      c=s.charAt(0)-s.charAt(1); 
      for(i=2;i<s.length()-1;i=i+2)//HERE loop is upto second last element 
       { 
       if(s.charAt(i)-s.charAt(i+1)!=c && s.charAt(i+1)- s.charAt(i)!=c) 
        { 
        f=0; 
        break; 
       } 
      } 

      if(f==1) 
       System.out.print("Funny"); 
      else 
       System.out.print("Not Funny"); 
     } 
    } 
} 

ERROR

例外) at Solution.main(Solution.java:22)

私はネット上で検索しようとしましたが、回答がありませんでした。

+0

このエラーが発生する目的は何ですか?存在しないものにアクセスしようとしています。あなたは 'string s =" hello ";を持っていて、インデックスが" 99 "でなければ' s [99] 'にアクセスしようとしたらどうなるでしょうか? – Kritner

+0

しかし、私はそれから抜け出ていない。私は多くを試みたが、エラーが常に来ている。あなたは私のエラーを指摘してくださいできますか? –

+0

私は何が起こっているのか分かりませんので、許してください。しかし、if(s.charAt(i) - s.charAt(i + 1)!= c && s.charAt(i + 1) - s.charAt(i)!= c) '? ..私たちの間隔は2つで – Pythogen

答えて

1

エラーメッセージは、どこに問題があるかを示しています。これは、エラーメッセージは、例外がc=s.charAt(0)-s.charAt(1);

あるライン22に発生し、それが出ますがわかります

Javaで「範囲外の文字列インデックス」のようなエラー

を持っていることの理由ですs.charAt(0)を呼び出すときに意味する String index out of range: 0のため、sの長さは0であり、sはおそらく空の文字列であることを意味します。

関連する問題