Сравнение строк с использованием методов Split, toCharArray и Equals - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь сравнить 2 строки.Я использовал метод split, а затем toCharArray методы.

После всего, что я использовал, равно, но в конце я получаю:

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException"

import java.util.Scanner;

public  class LoopsWiederholung {
public static void main (String [] args){

    System.out.print("Enter the first String : ");
    Scanner scan1  =  new Scanner(System.in);
    String s1  = scan1.next();
    s1.toUpperCase();

    System.out.print("Enter the second String : ");
    String s2 = scan1.next();
    s2.toUpperCase();
    String[] s3 = new String[100];
    s3 = s1.split("\\ ");

    String[] s4 = new String[100];
    s4 = s2.split("\\ ");

    for (int i = 0 ; i< 100 ; i++){
       if( s3[i].toCharArray().equals(s4[i].toCharArray())){
           System.out.print(s3[i]);
           }
       }


   }
}

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Цикл for выполняет итерацию от 0 до 99, но предполагает, что в этом массиве 99 элементов, поэтому, если их нет, вы видите исключение ArrayIndexOutOfBoundsException.

Одно исправление может быть изменено:

String[] s3 = s1.split("\\ ");

и

String[] s4 = s2.split("\\ ");

Так что цикл for можно изменить на:

for (int i = 0 ; i< s3.length(); i++){
    if(s3[i].equals(s4[i])){
        System.out.print(s3[i]);
    }
}

Как упоминал @Scary Wombat, проще сравнивать две строки, используя string1.equals(string2) вместо проверки массивов символов.

0 голосов
/ 15 ноября 2018

Так много ошибок, так что найдите мой код с комментариями

    System.out.print("Enter the first String : ");
    Scanner scan1  =  new Scanner(System.in);
    String s1  = scan1.next();
    s1 = s1.toUpperCase();  // Strings are immutable

    System.out.print("Enter the second String : ");
    String s2 = scan1.next();
    s2 = s2.toUpperCase();

    // first check the lengths
    if (s1.length() != s2.length()) {
        System.out.println("not the same");
        return;
    }

    String[] s3 = s1.split(""); // use this pattern

    String[] s4 = s2.split("");

    for (int i = 0 ; i< s3.length ; i++){
        if (s3[i].equals(s4[i]))
           System.out.print(s3[i]);
       }
   }

Я думаю, что вы либо split получите массив Strings, либо используете toCharArray() для сравнения chars

...