2017-10-23 12 views
-4

Mein Programm soll schlechte Wörter in einer bestimmten Eingabe finden, aber manchmal bekomme ich einen Fehler außerhalb der Grenzen. Was ist die Ursache für diesen Fehler?Index oder String außerhalb der Grenzen Ausnahmefehler

/* Andrew Woan - Alien Message Board Project - Period 1 */ 
import java.lang.Math; 
import java.util.Scanner; 
public class Alien { 
    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     int dollars = 0; 
     int qey = 0; 
     int carrots = 0; 
     System.out.println("Enter a message board post:"); 
     String post = scan.nextLine(); 
     String[] parts = post.split("-"); 
     String username = parts[0]; // Alien's Username 
     String message = parts[1]; // Alien's Message 
     System.out.println(username + "-" + message); 
     int space = 0; 
     int anotherspace = message.substring(space, message.length()).indexOf(" "); 
     while (anotherspace != -1) { 
      String badword = message.substring(space, space + anotherspace); 
      if (badword.equals("qey")) { 
       qey++; 
      } 
      if (badword.equals("^^")) { 
       carrots++; 
      } 
      if (badword.equals("$")) { 
       dollars++; 
      } 
      space = +anotherspace + 1; 
      anotherspace = message.substring(space, message.length()).indexOf(" "); 
     } 
     char lastdollars = message.charAt(message.length() - 1); 
     char seconddollars = message.charAt(message.length() - 2); 
     char lastqey = message.charAt(message.length() - 1); 
     char secondqey = message.charAt(message.length() - 2); 
     char thirdqey = message.charAt(message.length() - 3); 
     char fourthqey = message.charAt(message.length() - 4); 
     char lastcarrots = message.charAt(message.length() - 1); 
     char secondcarrots = message.charAt(message.length() - 2); 
     char thirdcarrots = message.charAt(message.length() - 3); 
     if (((lastcarrots == '^') && (secondcarrots == '^') && (thirdcarrots == ' '))) { 
      carrots++; 
     } 
     if (((lastqey == 'y') && (secondqey == 'e') && (thirdqey == 'q') && (fourthqey == ' '))) { 
      qey++; 
     } 
     if (((lastdollars == '$') && (seconddollars == ' '))) { 
      dollars++; 
     } 
     if (qey > 0 || carrots > 0 || dollars > 0) { 
      System.out.println(""); 
      System.out.println("Results:"); 
      System.out.println(""); 
      System.out.println("BAD"); 
      System.out.println(username); 
      System.out.println("^^: " + carrots); 
      System.out.println("qey: " + qey); 
      System.out.println("$: " + dollars); 
     } else { 
      System.out.println(""); 
      System.out.println("Results:"); 
      System.out.println(""); 
      System.out.println("CLEAN"); 
     } 
    } 
} 
+0

Hallo, willkommen auf StackOverflow! Die Gemeinschaft wird Ihnen gerne helfen, da wir hier sind, um zu lernen, wie ich bin und zu lehren, wie es viele erfahrene Benutzer jeden Tag tun. In diesem Zusammenhang empfehle ich Ihnen dringend, die [Richtlinien] (https://stackoverflow.com/help/how-to-ask) zu lesen. Dadurch wird Ihre Frage klar und hoffentlich auch für die Community nützlich. So viele Menschen können aus Ihren Zweifeln lernen, desto besser. Genießen Sie Ihren Aufenthalt und lassen Sie Ihre Motivation nicht untergehen! – Worice

+0

Sie konnten die Zeichenfolge nicht in Leerzeichen aufteilen und dann jedes Element gegen die Sperrliste prüfen – jrtapsell

Antwort

0

Ich weiß es nicht sicher, aber haben Sie versucht, diese Zeile zu ändern? Leerzeichen = + ein weiterer Bereich +1;

An: space + = anotherspace;

Sie erhöhen bereits um 1 mit der + = und dann möchten Sie es erneut tun. Das ist von einem kurzen Blick.

Verwandte Themen