# kurze Frage if(!)



## Bigdawg (11. Jun 2007)

Hallo hab mal ne kurze Frage...
und zwar versteh ich diesen Ausdruck nicht. bzw was macht das ! Zeichen....

```
if (! (c1.add( MyUtils.wordArray[k] )))
```

heisst das ungleich?


----------



## Gast (11. Jun 2007)

Das ! macht aus einem true ein false, dreht also die Aussage um.
Wenn in diesem Fall c1.add(..) false zurück gibt, ist die Bedingung erfüllt und der if-Blocjk wird abgearbeitet.


----------



## SlaterB (11. Jun 2007)

Negation eines Boolean-Wertes

if (!false)


----------



## Bigdawg (11. Jun 2007)

ahh ok Danke!!!!


----------



## André Uhres (11. Jun 2007)

D.h. die Methode "add" gibt einen boolean zurück, wahrscheinlich um zu sagen, ob's geklappt hat. Die Negation ist dann parktisch, wenn du etwas machen willst für den Fall, wo der "add" *nicht* geklappt hat. Ansonsten versuche ich meistens die Negationen möglichst zu umgehen.


----------



## SlaterB (11. Jun 2007)

! (not) braucht man oft, z.B. 
if (not myList.isEmpty)

da formuliere ich eigene allgemeine Operationen immer positiv, 
auch wenn meistens die Negation gebraucht wird

denn auch wenn 
if (myList.isNotEmpty)
oft was sparen würde, wäre eine doppelte Verneinung a la
if (not myList.isNotEmpty)
ein Graus


----------



## André Uhres (11. Jun 2007)

SlaterB hat gesagt.:
			
		

> ..if (not myList.isNotEmpty)..


Wie wär's mit "hasElements"  :bae:


----------



## BigDawg (11. Jun 2007)

Wenn hier schon so ne rege Diskussion ist dann post ich das gleich ganz hoff ihr könnts mir die outputs erklären...
Ich komm da irgendwie ned drauf

```
public class MyUtils {

      static String[] wordArray = { "adam", "brian", "adam", "alice", "bob", "charlie",                         Bob", "Charlie", "alice"};

}
 _______________________________________________________________________________________________
import java.util.*;

 

public class EndTermTester {

      public static void main(String[] args){

            

            Collection c1;

            Collection c2;

            Collection c3;

            Collection c4;

            

            c1 = new LinkedList();

            c2 = new HashSet();

            c3 = new HashSet();

            c4 = new ArrayList();

            

            Collection c =  new LinkedList();

            c.add(c1);

            c.add(c2);

            c.add(c3);

            c.add(c4);

            

            for (int k = 0; k<MyUtils.wordArray.length;k++ )

            {

                  if (! (c1.add( MyUtils.wordArray[k] )))

                        c2.add( MyUtils.wordArray[k] );

                  

                  if (! (c3.add( MyUtils.wordArray[k] )))

                        c4.add( MyUtils.wordArray[k] );

            }

            {//block 1

                  System.out.println(c);

            }

            {//block 2

                  Iterator iter = c1.iterator();

                  while (iter.hasNext()){

                        System.out.println(iter.next());

                        

                  }

            }

            {//block 3

                  Iterator iter =  c.iterator();

                  while (iter.hasNext()){

                        Collection cc = (Collection) iter.next();

                        Iterator iter2 = (cc).iterator();

                        if (cc instanceof List){

                              Collections.sort((List) cc);

                        }

                        System.out.println("start-------------");

                        while (iter2.hasNext()) {

                              System.out.println(((String) iter2.next()).toUpperCase());

                        }

                        System.out.println("stop-------------");

                  }

            }

            int idx = Collections.binarySearch((List) c4, MyUtils.wordArray[8]);

            {//block 4

                  System.out.println(idx);

            }

            System.exit(0);

      }

}
```


----------



## BigDawg (11. Jun 2007)

Console Output



```
block 1
[[adam, brian, adam, alice, bob, charlie, Bob, Charlie, alice], [], [Charlie, bob, adam, brian, Bob, alice, charlie], [adam, alice]]
adam
brian
adam
alice
bob
charlie
Bob
Charlie
alice
start-------------
BOB
CHARLIE
ADAM
ADAM
ALICE
ALICE
BOB
BRIAN
CHARLIE
stop-------------
start-------------
stop-------------
start-------------
CHARLIE
BOB
ADAM
BRIAN
BOB
ALICE
CHARLIE
stop-------------
start-------------
ADAM
ALICE
stop-------------
1
```


----------



## bygones (11. Jun 2007)

und was ist nun das problem ? 

ein einfaches programm... was die einzelnen Methoden machen kannst du einfach in der api nachlesen....


----------



## BigDawg (11. Jun 2007)

Problem ist nur wie der Output zustande kommt. Was die methoden machen weiss ich schon.


----------



## André Uhres (13. Jun 2007)

block 1: c1 enthält alles, daher c2 nix. c3 enthält keine Doppelgänger weil es ein Set ist, daher enthält c4 die Doppelgänger
block 2 ist eine Auflistung von c1
block 3: nacheinander eine Auflistung von c1, c2, c3 und c4, wobei die beiden Listen (c1 und c4) sortiert werden.
block 4 gibt aus dem Array den ersten Index von alice aus.


----------



## Leroy42 (13. Jun 2007)

André Uhres hat gesagt.:
			
		

> Ansonsten versuche ich meistens die Negationen _möglichst zu umgehen_.


 :shock: 

Frage 1) *Wie?*
Frage 2) *Warum?*


----------



## bygones (13. Jun 2007)

Leroy42 hat gesagt.:
			
		

> André Uhres hat gesagt.:
> 
> 
> 
> ...


negation der negation


----------



## André Uhres (13. Jun 2007)

Leroy42 hat gesagt.:
			
		

> André Uhres hat gesagt.:
> 
> 
> 
> ...


1. Z.B.: Das Glas ist nicht leer --> Das Glas hat etwas drin  
2. Weil ich meistens positiv denke


----------



## bygones (13. Jun 2007)

bist du dann ein collection.isEmpty verweigerer ? ;-)


----------



## André Uhres (13. Jun 2007)

deathbyaclown hat gesagt.:
			
		

> bist du dann ein collection.isEmpty verweigerer ? ;-)


Wieso, hab ich sowas gesagt? "Meistens" heisst doch noch lange *nicht *"immer"   
Ich benutze selbsverständlich auch Negationen, wo sie sinnvoll oder unumgänglich sind  :wink:


----------



## Marco13 (13. Jun 2007)

André Uhres hat gesagt.:
			
		

> 2. Weil ich meistens positiv denke


Pessimisten sind aber eigentlich bessere Programmierer :roll: :wink:


----------



## André Uhres (13. Jun 2007)

Marco13 hat gesagt.:
			
		

> ..Pessimisten sind aber eigentlich bessere Programmierer..


Mein lieber Freund, was ich mit "positiv denken" meine, hat nix mit Optimismus zu tun: 
es bedeutet schlicht und einfach einen bestimmten Sachverhalt  so zu betrachten, 
wie er in der Realität ist, und nicht so, wie er *nicht* ist. 
Falls man das überhaupt einer phylosophischen Richtung zuordnen kann, dann wohl eher zum "Realismus".
Noch weiter phylosophieren möchte ich aber *nicht* darüber


----------



## Leroy42 (14. Jun 2007)

André Uhres hat gesagt.:
			
		

> Noch weiter phylosophieren möchte ich aber *nicht* darüber



Einverstanden!   

Wie wär's dann mit 





			
				André Uhres hat gesagt.:
			
		

> ..._phylo_sophieren...


hierüber? (  )

(*SCNR*   :toll: )


----------

