Porównanie tablic stringów kończy się zawsze wynikiem False

0

Witam,

Mam o tutaj pewny kod

package Zad2;

import javax.swing.JOptionPane;

public class Main {

	public static void main(String[] args) {

	String ciag = JOptionPane.showInputDialog("Podaj ciąg znaków");

	System.out.println("Długość łancucha to: "+ciag.length()+" litery");
	System.out.println("Pierwsza litera łańcucha to "+ciag.charAt(0)+" a ostatni znak łańcucha to "+ciag.charAt(ciag.length()-1));
	System.out.println(ciag.substring(2, ciag.length()));
	System.out.println(ciag.substring(2, ciag.length()-1));

	String [] tablica = null;
	tablica = ciag.split("");
		for(int i=tablica.length-1;i>=0;i--){
			System.out.print(tablica[i].toString());

	}	System.out.println("\n");

		System.out.println(tablica[0].equals(tablica[tablica.length-1]) ? "true" : "false");

	}	
}

generalnie chodzi o linijkę

System.out.println(tablica[0].equals(tablica[tablica.length-1]) ? "true" : "false");

Powinno tutaj nastąpić porównanie tablic stringów ale za każdym razem wywala false

Pozdrawiam i proszę o podpowiedź

dodanie znaczników <code class="java"> - fp

0

Upewnij się, że one naprawdę są równe, bo mi ta linijka wyświetliła true gdy były 'true' i false gdy były 'false'.

0

False;/

Dlatego wrzuciłem cały kod , gdyż w nim może być jakiś problem..

0

Gdy przypsiujesz stringa do tablicy to w tab[0] nie masz nic a reszta elementów jest przesunięta o 1. Więc albo je 'cofnij' o 1 albo zamiast tab[0] porównuj tab[1].

0
package Zad2;

import javax.swing.JOptionPane;

public class Main {

	public static void main(String[] args) {

	String ciag = JOptionPane.showInputDialog("Podaj ciąg znaków");

	System.out.println("Długość łancucha to: "+ciag.length()+" litery");
	System.out.println("Pierwsza litera łańcucha to "+ciag.charAt(0)+" a ostatni znak łańcucha to "+ciag.charAt(ciag.length()-1));
	System.out.println(ciag.substring(2, ciag.length()));
	System.out.println(ciag.substring(2, ciag.length()-1));

	String [] tablica = null;
	tablica = ciag.split("");
		for(int i=tablica.length-1;i>=0;i--){
			System.out.print(tablica[i].toString());

	}	System.out.println("\n");

		System.out.println(tablica[1].equals(tablica[tablica.length-1]) ? "true" : "false");

	}	
}

Ok zrobiłem to , w JOption wpisałem aaa bbb aaa czyli 1 i ostatnia tablica jest taka sama , jednak zwraca false

dodanie znacznika <code class="java"> - fp

1

Dobra, teraz wiem jak to ma wg Ciebie działać bo się wcześniej już pogubiłem. :)
Daj split(" ") zamiast split("") i tablica[0] tak jak było, będzie okej.

0

Taki kod już działa poprawnie dla mnie:

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {

        String ciag = JOptionPane.showInputDialog("Podaj ciąg znaków");

        System.out.println("Długość łancucha to: " + ciag.length() + " litery");
        System.out.println("Pierwsza litera łańcucha to " + ciag.charAt(0)
                + " a ostatni znak łańcucha to "
                + ciag.charAt(ciag.length() - 1));
        System.out.println(ciag.substring(2, ciag.length()));
        System.out.println(ciag.substring(2, ciag.length() - 1));

        String[] tablica = null;
        tablica = ciag.split("\\s+");
        for (int i = tablica.length - 1; i >= 0; i--) {
            System.out.print(tablica[i].toString());

        }
        System.out.println("\n");

        System.out.println(tablica[0].equals(tablica[tablica.length - 1]));

    }
}
0

Dzięki wielkie :)

0

mam jeszcze jedno pytanie , dajmy na to wprowadzamy poprzez JOption podsłowo i jak sprawdzić ile razy to podsłowo znajduje się w tekscie.

String ciag = JOptionPane.showInputDialog("Podaj ciąg znaków");

Chodzi np jeśli ciągiem byłby "stodwadzieścia stopięć stojedenaście"

to jak sprawdzić czy w tym ciągu znajduje się podsłowo sto ?

0

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
Pętla z użyciem metody indexOf(String str, int fromIndex).

String sentence = "bo stopa jest za niska, stonoga ma sto nóg, ale czystością nie grzeszy";
int counter = 0;
int from = 0;
while(sentence.indexOf("sto",from)>-1)
{
      from = sentence.indexOf("sto",from)+1;
      counter++;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1