2016-12-07 1 views
-2

вот мой код.В чем причина ошибки, например, «String index out the range» в java?

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

ОШИБКА

Исключение в потоке "основного" java.lang.StringIndexOutOfBoundsException: индекс строки из диапазона: 0 в java.lang.String.charAt (String.java:658) at Solution.main (Solution.java:22)

Я попытался найти в сети, но я не получил ответа.

+0

Что вы имеете в виду, какова цель этой ошибки? вы пытаетесь получить доступ к тому, что не существует - например, вы, если у вас есть 'string s =" hello ";' если нет индекса «99», что бы вы ожидали, если попытаетесь получить доступ к '' [99] '? – Kritner

+0

Но я не выхожу из этого. Я много пробовал, но ошибка всегда приходит. Можете ли вы указать мою ошибку? –

+0

Я точно не знаю, что происходит, так что простите меня, но вы уверены, что вам нужно добавить один в i ('s.charAt (i + 1)') в 'if (s.charAt (i) - s.charAt (i + 1)! = c && s.charAt (i + 1) - s.charAt (i)! = c) '? .. наши интервалы на два – Pythogen

ответ

1

сообщение об ошибке сообщает вам, где лежит проблема. Это причина того,

ошибку как «индекс Строка из диапазона» в Java

сообщение

ошибка говорит вам, происходит исключение в строке 22, которая c=s.charAt(0)-s.charAt(1);

и это вне связанного из-за String index out of range: 0, что подразумевает, что при вызове s.charAt(0) длина s равна 0, что означает, что s, вероятно, является пустой строкой.

Смежные вопросы