Напишите программу для получения ввода от пользователя и проверки его правописания. - PullRequest
0 голосов
/ 16 июня 2019

Я написал код, чтобы найти, равны ли две строки или нет.Первый ввод строки должен быть предоставлен пользователем, и его следует сравнить со второй строкой, которая предопределена.Но даже когда я даю ввод, который совпадает со второй строкой, вывод неверен.

import java.util.Scanner;

public class correction {

    public static void main(String[] args) {
        int i,c=0;
        String[] s1=new String[] {"F","R","I","E","N","D","S"};
        String[] s2=new String[7];
        System.out.println("enter a alphabet");
        Scanner sc=new Scanner(System.in);
        s2[0]=sc.next();
        s2[1]=sc.next();
        s2[2]=sc.next();
        s2[3]=sc.next();
        s2[4]=sc.next();
        s2[5]=sc.next();
        s2[6]=sc.next();
        int length = s1.length;
        for(i=0;i<length;i++)
        {
        if(s1.equals(s2[i]))
        c++;    
        }
        if(c==7)
            System.out.println("right way");    
        else
            System.out.println("wrong way");
    }
}

Я ожидал, что вывод будет «правильным», но вывод «неправильным».И значение c также равно 0.

Ответы [ 3 ]

1 голос
/ 16 июня 2019

Советы:

  1. Сначала добавьте метод .lower() к методу .equals(), чтобы избежать проблем, связанных с заглавными буквами.
  2. Вы сравниваете весь массив s1 со значением s2[i], вы можете изменить s1 на s1[i].

Новое здесь, поэтому, пожалуйста, игнорируйте дерьмовое форматирование.

1 голос
/ 16 июня 2019

В настоящее время вы сравниваете весь массив s1 с определенной буквой в s2 в каждой итерации цикла for.Вместо этого вам следует сравнить s1[i] с s2[i] следующим образом:

int length = s1.length;
for(i=0;i<length;i++)
{
    if(s1[i].equals(s2[i]))
        c++;    
}
if(c==7)
    System.out.println("right way");    
else
    System.out.println("wrong way");

Таким образом, теперь вы сравниваете каждую букву в s1 с каждой буквой в s2,при условии, что вы вводите буквы только как s2.

0 голосов
/ 16 июня 2019

s1 - это ссылка на массив, а s2[i] - это ссылка на строку, поэтому s1.equals(s2[i]) оценивается как false, поэтому c++ никогда не запускается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...