» »

java problem

java problem

BRBR ::

             //list1 je [1,2]  
             //HashSet - ker ne dovoli duplikatov
             HashSet set1 = new HashSet(list1);  
             //args[1] je string "2$3"  
             set1.addAll(Arrays.asList(args[1].split("\\$")));  
             //če gledam (args[27].split("\\$")) v debugerju sta tam 2 in 3, OK 
             //v set1.toString(); pa "1,2, 2,3". Od kod tale space ?

  • spremenil: BRBR ()

Sergio ::

public class test 
{
	public static void main(String[] args) 
	{
		List list1 = Arrays.asList("1", "2");
		HashSet set1 = new HashSet(list1);
		set1.addAll(Arrays.asList("2$3".split("\\$")));
		System.out.println(set1.toString());
	}
}


Output je
[3, 2, 1]

Mislim, da ni druge, kot da je problem v vhodnih podatkih. Nekje ti en space reže. Podrobneje poglej oba lista.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

BRBR ::

EDIT2: gledam tvoj utput, in vidim space pred 2 in pred 1. A to si peš dodal, al pa je forum pripopal ?


Evo, real thing. Ne vidim zakaj ne dela. Zdej je space tud pred 27 (v zadnji vrstici outputa).
EDIT: (ga vidim v outputu v netbenas pred drugim 33 in pred 27, tule ga forum požre)
Apak vseeno, očitno pred drugim 33 pa je gotovo.


            System.out.println(list1);
            HashSet set1 = new HashSet(list1);
            System.out.println(set1);
            System.out.println(args[27]);
            System.out.println( args[27].split("\\$").toString());
            if (!args[27].equals(""))
            {
              set1.addAll(Arrays.asList(args[27].split("\\$")));
            }
            System.out.println(set1.toString());


output:


[13,33]
[13,33]
27$33
[Ljava.lang.String;@1266392
[13,33, 33, 27]

Zgodovina sprememb…

  • spremenil: BRBR ()

BRBR ::

Evo en test case. Če mi kdo vsaj razloži zakaj se ne dogodi nič v drugi vrstici, bi bilo že nekaj (-:

             List list1 = Arrays.asList("13,33");  
             list1.removeAll(Arrays.asList("13"));// THIS REMOVES NOTHING ! I suspect coz it thinks that 13 =  " 13"  
               
             String arg = "44,55";  
             System.out.println(list1);// [13,33]  
             HashSet set1 = new HashSet(list1);  
             System.out.println(set1);// [13,33]  
             System.out.println(arg);//44,55  
             if (!arg.equals(""))  
             {  
               String[] tmpArrStr = arg.split(",");  
               //set1.addAll(Arrays.asList(tmpArrStr));  
               //attempt zo do somethig about that, but with no effect(-:  
               for (int k = 0; k < tmpArrStr.length; k++)  
               {  
                 set1.add(tmpArrStr[k].replaceAll("[^(0-9)]", "").toString());  
               }  
             }  
             System.out.println(set1.toString());//[13,33, 44, 55]


Zadnji out.print se lepo vidi kako se pojavijo kr eni presledki iz lufta takorekoč.

Zgodovina sprememb…

  • spremenil: BRBR ()

arjan_t ::

kateri presledki?
prvi element je "13,33", drugi "44" in tretji "55"

BRBR ::

ups, ahh sorry...maš prav...Hvala za posojen pogled na kodo.

Zgodovina sprememb…

  • spremenil: BRBR ()

arjan_t ::

kot sem napisal:
prvi element v listu je "13,33", med posameznimi elementi pa je ", "

Sergio ::

BRBR, zelo bi ti pomagalo če bi se naučil uporabljati templated kodo, in bi ti kompajler zajamral da druga vrstica ni OK.

Poglej, v prvi vrstici boš iz Stringa "13,33" dobil List, v katerem je en element "13,33".

Najbrž si hotel klicati Arrays.asList("13", "33"). V tem primeru dobiš List, ki ima dva elementa, "13" in "33".

V drugi vrstici ga spet biksaš. Najbrž si hotel klicati list1.removeAll("33").

Lej, priporočam ti da si za začetek pozorno prebereš vsaj API funkcij, ki jih kličeš, da boš bolj podrobno razumel kaj se dogaja spodaj.

Če pa "že razumeš" kaj se dogaja, si pa površen, drugega ti ne morem reči.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java - DN] Naključna števila

Oddelek: Šola
121364 (893) nyler
»

Rekurzija v javi z ArrayList

Oddelek: Programiranje
81589 (1432) marjan_h
»

[Java] Frekvenca besed

Oddelek: Programiranje
71341 (1195) zila90
»

[Java] Preverjanje polja za iste stringe

Oddelek: Programiranje
81142 (1020) infiniteLoop
»

[Java] Shranjevanje podatkov in datotek

Oddelek: Programiranje
71234 (1187) Vesoljc

Več podobnih tem