отобразить треугольник путем сравнения значений сторон, хранящихся в виде списка строк - PullRequest
0 голосов
/ 23 марта 2020

Я разделил список строк на ",", а затем проверил charAt 0 == 1 и charAt 0 == 2, затем равносторонний треугольник .... и так далее, но я не получаю ни одного из них для всех, в то время как при отладке я вижу, что charAt 0 и charAt 1 равны, но вся оценка ложна.


    public static void main(String[] args) {
        List<String> triangleToy=Arrays.asList("36 36 36","3 3 3","2 4 2");
         List<String> toRet= new ArrayList<String>();
        // TODO Auto-generated method stub
        for (String s : triangleToy) {

        String[] index=s.split(" ");

        if((index[0]==(index[1]))&&(index[0]==(index[2]))){

            toRet.add("Equilateral");

        }
        else if(index[0]==(index[1])){
            toRet.add("Isosceles");

        }
        else{
            toRet.add("None of these");
        }


    }
        System.out.println(toRet);

}
}

Пожалуйста, объясните мне, что здесь происходит ...

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Я вижу две проблемы в вашей программе:

  1. Как уже отмечалось, == сравнивает ссылку, которая не является надежной в вашем случае сравнения строк, она также не рекомендуется как вы сравниваете строки в Java, index[0].equals(index[1]) и аналогично сделаете это для вас. Посмотрите на этот ответ для получения более подробной информации.

  2. В контрольном операторе 'Isoceles' вам необходимо иметь такие дополнительные условия: index[0].equals(index[1]) || index[1].equals(index[2]) || index[0].equals(index[2])

1 голос
/ 23 марта 2020

При сравнении строк в Java (и, в более общем смысле, объектов) с оператором "==" сравниваются не символы строк, а их ссылки. Если два объекта не являются одним и тем же объектом, "==" возвращает false

Здесь вы должны изменить for l oop следующим образом:

for (String s : triangleToy) {

    String[] index=s.split(" ");

    if((index[0].equals(index[1]))&&(index[0].equals(index[2]))){

        toRet.add("Equilateral");

    }
    else if(index[0].equals(index[1])){
        toRet.add("Isosceles");

    }
    else{
        toRet.add("None of these");
    }


}

Для строк функция .equals сравнивает символы в строках, а не их ссылки.

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