2016-11-15 2 views
0

Недавно я пытался создать программу, которая принимает два входа и проверяет, одинаково ли они представлены в других базах (базы до 20). Но я продолжаю получать исключение индекса за пределы в строке № 28 ... что делать?Почему моя программа продолжает давать мне ArrayIndexOutOfBoundsException, даже жесткая У меня нет одного

Например: 12 (основание 10) = 5 (основание 3) [. Оба представлены как '12' в своих соответствующих базах]

import java.util.Scanner; 
import java.util.Arrays; 
class Bases 
{ 

    public static void main() 
    { 
     Scanner sc = new Scanner(System.in); 
     System.out.println("Enter Two Numbers: "); 
     int a = sc.nextInt(); 
     int b = sc.nextInt(); 
     System.out.println("Thank You for inputting the numbers!"); 

     String basea[] = new String[20]; 
     String baseb[] = new String[20]; 

     int i=0 , j=0; 
     for(i=0;i<20;i++) 
     { 
      basea[i] = convert(a,i+1); 
      baseb[i] = convert(b,i+1); 
     } 

     for(i=0;i<=19;i++) 
     { 
      for(j=0;i<=19;j++) 
      { 
       if(basea[i].equals(baseb[j])) 
       {//this is where the exception keeps popping 

        break ; 
       } 
      } 
     } 
     if(i!=20){ 
      if(i==0){ 
       i=9; 
       System.out.println(a+"(base "+(i+1)+") ="+b+"(base "+(j+1)+")"); 
      } 
      else 
       System.out.println(a+"(base "+(i+1)+") ="+b+"(base "+(j+1)+")"); 
     } 
     else System.out.println("Numbers dont match at all till base 20!!"); 
    } 

    private static String convert(int number,int base) 
    { 

     return Integer.toString(number,base); 
    } 

} 
+2

Ваших внутренний цикл имеет опечатку использование I вместо J для условного – Justen

+3

'для (J = 0; я <= 19; j ++)' опечатка – Jerry06

+0

"даже жесткий я не получил один" У вас явно есть одна из тех капризных JVM, которые вам просто нравятся. Либо это, либо * у вас есть один *. –

ответ

1
for(j=0;i<=19;j++) 

Это выше цикл должен быть у < = 19

for(j=0;j<=19;j++) 
+1

Вот почему вы всегда должны введите достойное имя переменной, а не одну букву. Тогда этого не произошло. –

+1

О, я даже не понял, что сделал опечатку !! О чувак! Спасибо Большое!! – RitvijSrivastava

0
for(i=0;i<=19;i++) 
{ 
    for(j=0;i<=19;j++) 
    { 
     if(basea[i].equals(baseb[j])) 
     {//this is where the exception keeps popping 

      break ; 
     } 
    } 
} 

вы можете увидеть в этом оригинальном фрагменте кода вы имели опечатку

for(i=0;i<=19;i++) 
{ 
    for(j=0;i<=19;j++) <---- the middle parameter is 'i' instead of 'j' 
    { 

Просто исправьте это, установив свою опечатку, и если вы хотите, чтобы вы могли сделать это, добавьте аккуратность.

for(i=0;i<20;i++) 
{ 
    for(j=0;j<20;j++) 
    { 
+0

Большое спасибо! Хорошее предложение кстати – RitvijSrivastava

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