【问题标题】:Index or String out of bounds exception error索引或字符串越界异常错误
【发布时间】:2017-10-23 20:40:39
【问题描述】:

我的程序应该在给定的输入中找到坏词,但有时我会遇到越界错误。这个错误的原因是什么?

/* 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");
        }
    }
}

【问题讨论】:

  • 嗨,欢迎来到 StackOverflow!社区很乐意为您提供帮助,因为我们在这里像我一样学习,并像许多有经验的用户每天所做的那样进行教学。为此,我强烈建议您阅读guidelines。这将使您的问题变得清晰,并希望对社区也有用。许多人可以从您的疑虑中学习,那就更好了。享受您的逗留,不要让您的动力下降!
  • 你不能用空格分割字符串,然后对照禁止列表检查每个元素

标签: indexoutofboundsexception stringindexoutofbounds


【解决方案1】:

我不确定,但你试过改变这条线吗? 空格 =+ 另一个空格 +1;

到: 空格 += 另一个空格;

您已经使用 += 增加了 1,然后您想再次执行此操作。这是一瞥。

【讨论】:

    猜你喜欢
    • 2012-10-03
    • 2019-08-01
    • 2013-12-08
    • 2014-10-16
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    相关资源
    最近更新 更多