2016-03-30 13 views
-3

Bir giriş dizesinin alındığı ve giriş karakterinin alındığı bir kod üzerinde çalışıyorum. Kod, o String'deki o karakterin yüzdesini hesaplayacaktır. Kod aşağıda verilmiştir: En dize 4 uzunluğu (şimdiye son endeks 3 olan), bu endeksi 4 ulaşmaya çalışacağını varsaİstisna gösterme Sebepsiz Sebep Hata

import java.util.Scanner; 
class apple{ 
    public static void main(String args[]){ 
     int i,j,l=0; 
     float m; 
     char k; 
     Scanner in = new Scanner(System.in); 
     System.out.println("Enter the String"); 
     String str = in.nextLine(); 
     j=str.length(); 
     System.out.println("Enter the character to be found"); 
     char s = in.next(".").charAt(0); 
     for(i=0;i<=j;i++){ 
      k = str.charAt(i); 
      if(k == s){ 
       l++; 
      } 
     } 
     m= l/j; 
     m=m*100; 
     System.out.println("percent character in String is "+m); 
    } 
} 
+2

/hata gösterilmemesinin nedir istisna mı? –

+1

Ve istisna var mı? "Hiçbir sebepten" dememek yardımcı olmaz. Lütfen sorudaki tüm yığın izlemeyi yapıştırın. – Atri

+0

Programlamada "sebep yok" için hiçbir şey olmuyor. Hiç. – redFIVE

cevap

2

, Aksi

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

için döngü değiştirin ve bir istisna atmak. Eğer eleman 0'dan lengt-1 yerine

yapmanız gereken gider düşünüyor olmadığı için

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

ve bu bir java.lang.StringIndexOutOfBoundsException:

atıyor:

0

Bu yapıyoruz:

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

Özgeçmişiniziolarak düzenleyin. Java dizisi 0 tabanlı dizin

0

kullandığı için, öğeye dizi boyutu konumunda erişemiyoruz. Dize'nin ilk karakteri '0', son sizinString.length() - 1'dir, bu nedenle döngüünüzü

olarak değiştirin
for(i = 0 ; i < j ; i++){ 
    k = str.charAt(i); 
    if(k == s){ 
     l++; 
    } 
} 

o çalışacağız ;)