2016-03-30 18 views
-3

Ich arbeite an einem Code, in dem eine Eingabe String genommen wird und ein Eingabezeichen genommen wird. Der Code berechnet das prozentuale Auftreten dieses Zeichens in diesem String.Exception Fehler ohne Grund

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

Welche Ausnahme/Fehler zeigt, ist es? –

+1

Und die Ausnahme ist? Die Aussage "ohne Grund" hilft nicht. Fügen Sie den vollständigen Stack-Trace in die Frage ein. – Atri

+0

Nichts passiert "ohne Grund" in der Programmierung. Je. – redFIVE

Antwort

2

ändern Schleife

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

Andernfalls, wenn Ihr String eine Länge von 4 hat (so der letzte Index ist 3), wird es versuchen, Index zu erreichen 4: Der Code ist unten angegeben und wirf eine Ausnahme aus.

0

Sie tun dies:

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

und dies ist ein java.lang.StringIndexOutOfBoundsException:

werfen, weil Sie nicht in Betracht ziehen, dass das Element von 0 bis lengt-1 geht

stattdessen sollten Sie tun:

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

Bearbeiten Sie Ihre for-Schleife zu for (i=0;i<j;i++). Wir können nicht auf das Element an der Position der Array-Größe zugreifen, da das Java-Array 0-basierten Index verwendet

0

Das erste Zeichen eines Strings ist '0', das letzte ist yourString.length() - 1, also ändern Sie Ihre Schleife zu

for(i = 0 ; i < j ; i++){ 
    k = str.charAt(i); 
    if(k == s){ 
     l++; 
    } 
} 

es wird funktionieren;)

Verwandte Themen