2015-02-05 9 views
0

Это мой фрагмент кода:Java8-StringIndexOutOfBoundsException

import java.util.Scanner; 

public class Numrs { 

    public static void main(String args[]) { 
     Scanner in = new Scanner(System.in); 
     int num = in.nextInt(); 
     int pos, i = 1; 
     char d; 
     while (num <= 10) { 
      String line = in.nextLine(); 
      pos = line.length(); 
      if (line.length() <= 1000000) { 

       if (line.charAt(i) == 'R') { 

        line.replace('R', 'K'); 
        i++; 
       } 
       if (line.charAt(i) == 'K') { 
        line.replace('K', 'R'); 
        i++; 
       } 
       num++; 

      } 

     } 

    } 

Это показывающая StringIndexOutOfBoundsException, когда я вхожу в одно целое число цифр, как 3, и даже если 2-значный номер введен, это получение завершается без чтения строки , Пожалуйста помоги.

+0

Что вы пытаетесь сделать? – Eran

+0

«вводится двузначное число, оно заканчивается без чтения строки» - любое 2-значное число, отличное от 10, не будет удовлетворять условию, а (num <= 10), следовательно, оно прекращается. – Yasmeen

+0

http://www.hackerearth.com/tracks/pledge-2015-easy/number-of-rs-1/ –

ответ

0

Ну, если вы введете только один символ/цифру, тогда размер будет 1, но он будет помещен в индекс 0. и вы пытаетесь сделать line.charAt(i), где i=1

+0

Это не о размере, о количестве тестовых случаев , и мое требование - заменить R на K и наоборот из позиции 1 не 0 –

0

В этом подходе есть много проблем. 1. Вход, который вам нужно передать, - это больше цифры, например 3 this works, потому что после 3 вашего ожидания ожидается какая-то строка.

  1. Вы не обновляете num. Таким образом, это закончится бесконечным циклом

  2. Это не сработает, если вы дадите какое-либо значение больше 10. Я не уверен, чего вы хотели достичь.

  3. Start я от 0, разработчики начинают с 0 :)
+0

http://www.hackerearth.com/tracks/pledge-2015-easy/number-of-rs-1/ Это то, что я пытаюсь решить, поэтому мне нужно начать с i = 1 и end в i