2017-07-18 14 views
0

コンソールのエラーだった理由:私は1通の手紙あなたforループの両方で私のコードは、このエラー

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at java.lang.String.charAt(Unknown Source) at javaB.Cipher.main(Cipher.java:17)

package javaB; 
import java.util.*; 

public class Cipher { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     // TODO Auto-generated method stub 
     Scanner reader=new Scanner(System.in); 
     String key1="abcdefghijklmnopqrstuvwkyz "; 
     String key2="QWERTYUIOPASDFGHJKLZXCVBNM_"; 
     System.out.println("System launched----enter the code----"); 
     String aw=reader.nextLine(); 

     for(int ii=0;ii<=aw.length();ii++) 
     { 
      for(int i=0;i<=27;i++) 
      { 
       if(aw.charAt(i)==key1.charAt(i)) 
       { 
        System.out.println(key2.charAt(i)); 
       } 
      } 
     } 
    } 
} 
+0

おそらくawが28文字より短いため – alfasin

+0

おそらくawが2文字より短いためです。 – shmosel

答えて

0

i = 1のとき、javaはゼロインデックスに基づいているため、aw.charAt(1)はawから2番目の文字を取得しようとします。 AW =「Q」として、それが次のコード行がStringIndexOutOfBoundsExceptionを

aw.charAt(i)==key1.charAt(i) 

あなたはkey1.charAt(I)

でaw.charAt(II)を比較するためのコードを書きたいように見える単一の文字をスローしますました
aw.charAt(ii) == key1.charAt(i) 

これを確認してください。

+0

ありがとうございました!!!あなたはとても役に立ちます( - : –

+0

あなたはようこそ。答えを覚えてもらうか、それとも正しいと記入してください。) – Anil

+0

IQFAB_NGX !!!!!! –

1

を入力すると、あなたがあなたの終わりを超えてインデックスにアクセスすることを意味<=演算子を使用していることをkey..アレイ。 <演算子を使用します。言い換えれば、0から27までの28個の数字がある場合は、27番目のインデックスを除外する必要があります。

関連する問題