Как сравнить строку из конструкции через char [] - PullRequest
1 голос
/ 11 ноября 2011

Я попробовал следующее, но не смог получить ответ на сравнение 2-х строк. Как я могу сравнить b и x и получить «true»?

import java.io.*;

class Test {
  public static void main(String[] args) {
    // String a = "abc";
    String b = new String("abc");
    // System.out.printf("a == b -> %b\n", (a == b));
    // System.out.printf("a.equals(b) -> %b\n", a.equals(b));
    char[] x = new char[4];
    x[0] = 'a'; x[1] = 'b'; x[2] = 'c'; x[3] = 0;
    String s = new String(x);
    System.out.printf("x = %s\n", s);
    System.out.printf("b == s -> %b\n", b == s);
    System.out.printf("b.equals(s) -> %b\n", b.equals(s));
    System.out.printf("b.compareTo(s) -> %d\n", b.compareTo(s));
  }
}

x = abc
b == s -> false
b.equals(s) -> false
b.compareTo(s) -> -1

Ответы [ 4 ]

2 голосов
/ 11 ноября 2011
Массив

A char равен , а не a String.На самом деле, вы сравниваете эталонные значения объектов (String и char[]), которые никогда не будут истинными.

Вам необходимо либо преобразоватьchar массив в String и использование String.equals(otherString) или преобразование String в char массив и сравнение массивов со статическим методом из класса Arrays.

char[] x = new char[3];
x[0] = 'a'; x[1] = 'b'; x[2] = 'c';
String b = new String("abc");
String otherString = new String(x);
if (b.equals(otherString))
{
    // they match
}

Или используя статический метод из Arrays ...

char[] myStringAsArray = b.toCharArray();
if (Arrays.equals(x, myStringAsArray))
{
    // they match
}

Как отмечается в ответе Алекса, в строке Java нет завершающего нуля.

JavaDoc:

http://download.oracle.com/javase/6/docs/api/java/lang/String.html

http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html

1 голос
/ 11 ноября 2011

Выньте завершающий символ '0', используйте String.equals и сделайте массив символов длиной три символа.

1 голос
/ 11 ноября 2011

Вам не нужно завершать строку с 0 в Java.И не используйте == для строк.Будет сравниваться ссылка, а не содержание.

0 голосов
/ 11 ноября 2011

Размер массива должен быть три.

 char[] x = new char[3];
 x[0] = 'a'; x[1] = 'b'; x[2] = 'c';
 String s = new String(x);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...