tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
24
ZUGRIFFE
1115
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    dzyan dzyan ist offline Mitglied
    Registriert seit
    Oct 2008
    Ort
    Steiermark (Österreich)
    Beiträge
    20
    Hi !

    Ich möchte gerne User-Eingaben auf Vorhanden-Sein überprüfen.


    public class DrehFB
    {
    // Attribute:
    public String mannschaft;
    public int spiele;
    public int freispiele;
    public int aus;
    public int gTore;
    public int bTore;
    public int torDiff;
    public int punkte

    // Konstruktor
    public DrehFB(String m, int s, int fs, int a, int g, int b, int t, int p)
    {
    mannschaft = m;
    spiele = s;
    freispiele = fs;
    aus = a;
    gTore = g;
    bTore = b;
    torDiff = t;
    punkte = p;
    }

    static DrehFB[] mannschaften = new DrehFB[MANNSCHAFTEN_MAX];

    <main-method>

    Scanner eingabe1 = new Scanner(System.in);
    String ausw1 = eingabe1.next();

    Scanner eingabe2 = new Scanner(System.in);
    String ausw2 = eingabe2.next();


    if (ausw1.contains(mannschaft) && ausw2.contains(mannschaft))
    ...

    Sollte normal funktionieren, schreibt aber eine Fehler-Meldung:
    Cannot make a static referenz to a non-static-referenz

    Wenn ich die Attibute aber auf static ändere, dann steht auf einmal bei allen Mannschaften das gleiche drinnen, wenn man diese ausgibt ?

    Aber vielleicht überprüft man Eingaben (ob vorhanden oder nicht) sowieso anders ?


    Danke im voraus.


    LG
    Dzyan
     

  2. #2
    DealeyLama DealeyLama ist offline Mitglied Silber
    Registriert seit
    Jan 2005
    Beiträge
    91
    Hallo,

    was hast Du denn genau vor? Ich werde aus dem Code nicht recht schlau...

    Schönen Tag noch

    Alexander Schell
     

  3. #3
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von dzyan Beitrag anzeigen
    <main-method>

    Scanner eingabe1 = new Scanner(System.in);
    String ausw1 = eingabe1.next();

    Scanner eingabe2 = new Scanner(System.in);
    String ausw2 = eingabe2.next();


    if (ausw1.contains(mannschaft) && ausw2.contains(mannschaft))
    ...

    Sollte normal funktionieren, schreibt aber eine Fehler-Meldung:
    Cannot make a static referenz to a non-static-referenz
    Nein, das kann nicht funktionieren. Du benötigst 2 Instanzen der DrehFB Klasse:
    Code java:
    1
    2
    3
    4
    5
    6
    
    DrehFB a = new DrehFB(...);
    DrehFB b = new DrehFB(...);
     
    if (ausw1.contains(a.mannschaft) && ausw2.contains(b.mannschaft)) {
      ...
    }
    Außerdem ist es ziemlich unüblich und verletzt das Prinzip der Datenkapselung bei der objektorientierten Programmierung die Attribute einer Klasse als public zu deklarieren.

    Gruß

    PS: Bitte verwende die Code-Tags!
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  4. #4
    dzyan dzyan ist offline Mitglied
    Registriert seit
    Oct 2008
    Ort
    Steiermark (Österreich)
    Beiträge
    20
    Wenn ich die ganzen Attribute als static declariere, dann steht überall der letzte
    Datensatz drinnen

    ZB:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    public class DrehFB
    {
        // Attribute:
        static String mannschaft;
        static int spiele;
        static int freispiele;
        static int aus;
        static int gTore;
        static int bTore;
        static int torDiff;
        static int punkte;
     
    DrehFB[] mannschaften = new DrehFB[MANNSCHAFTEN_MAX];
     
    mannschaften[0] = new DrehFB(0, "Team1", 2, 3, 1, 2, 3);
    mannschaften[1] = new DrehFB(1, "Team2", 2, 3, 1, 2, 5);
    mannschaften[2] = new DrehFB(2, "Team3", 2, 3, 1, 2, 1);
    mannschaften[3] = new DrehFB(3, "Team4", 2, 3, 1, 2, 4);

    Die Mannschaften werden aber über Tastatur eingegeben, damit stimmt das
    Programm so nicht ganz.

    Aber wenn ich das so mache (über Tastatur), dann steht bei jeder Mannschaft das gleiche
    drinnen (bei static-Attributen), wenn man das ausgibt - nicht mehr wie oben, sondern:

    Code :
    1
    2
    3
    4
    
    mannschaften[0] = ("Team4", 2, 3, 1, 2, 4);
    mannschaften[1] = ("Team4", 2, 3, 1, 2, 4);
    mannschaften[2] = ("Team4", 2, 3, 1, 2, 4);
    mannschaften[3] = ("Team4", 2, 3, 1, 2, 4);

    Deswegen public ...
    Geändert von dzyan (01.11.08 um 17:44 Uhr)
     

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von dzyan Beitrag anzeigen
    Wenn ich die ganzen Attribute als static declariere, dann steht überall der letzte
    Datensatz drinnen
    Wer hat denn gesagt du sollst die Attribute statisch deklarieren?

    Es macht keinen Sinn die Attribute als static zu deklarieren. Natürlich sind dann alle Werte gleich, es sind ja dann auch Klassenattribute. Du solltest den Zugriff nicht public machen, sondern private. Auf die Attribute einer Klasse sollte man ausschließlich über Getter/Setter-Methoden zugreifen können - also für ein Attribute "name" 2 Methoden getName() und setName() implementieren.

    Gruß
    Geändert von deepthroat (01.11.08 um 18:41 Uhr)
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    DealeyLama DealeyLama ist offline Mitglied Silber
    Registriert seit
    Jan 2005
    Beiträge
    91
    Hallo,

    DeeptTHroat hat Recht..deklariere die Attribute als 'private' und bau dir Getter- und Setter-Methoden dafür...
    Und wenn du mehrere Instanzen deiner Klasse in einem Container speichern möchtest, kannst du das zwar in in einem statischen Attribut - du musst dann aber einen statischen Index führen, um zu wissen wo du das nächste Element einfügen möchtes; auch ist ein Array nur dann sinnvoll wenn du genau weißt mit wievielen Elementen zu rechnen ist - machen, besser wäre es aber deine Klasse damit nicht zu belasten, sondern daß von den Teilen erledigen zu lassen die sie benutzen sollen...

    Schönen Abend

    Alexander Schell
     

  7. #7
    dzyan dzyan ist offline Mitglied
    Registriert seit
    Oct 2008
    Ort
    Steiermark (Österreich)
    Beiträge
    20
    Da habt Ihr sicher recht mit public, static und private - nur löst weder das eine noch das andere das Problem:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    public String get_ms()
    {
    return this.mannschaft;
    }
     
    static void mannschaftenEingeben(int mNr)
    { ... es werden hier die Mannschaften nur von der Tastatur eingeben ...}


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    static void spielergenisseEingeben(int mNr)
    {
    try
    {
    System.out.println();
    System.out.print("1. Mannschaft eingeben: ");
    Scanner eingabe1 = new Scanner(System.in);
    String ausw1 = eingabe1.next();
                    
    System.out.print("2. Mannschaft eingeben: ");
    Scanner eingabe2 = new Scanner(System.in);
    String ausw2 = eingabe2.next();
                            
    if (ausw1.contains(mannschaft) && ausw2.contains(mannschaft))
    ...

    FehlerCode:
    Cannot make a static referenz to an non-static-field mannschaft ...

    oder:

    Code :
    1
    2
    
    if (ausw1.contains(get_ms()) && ausw2.contains(get_ms()))
    ...

    FehlerCode:
    Cannot make a static referenz to an non-static-method get_ms() from type DrehFB ...
     

  8. #8
    DealeyLama DealeyLama ist offline Mitglied Silber
    Registriert seit
    Jan 2005
    Beiträge
    91
    Hallo,

    das ist kein Wunder...
    Du versuchtst aus einem statischen Kontext heraus ein Objekt-Attribut - 'mannschaft' - anzusprechen; das geht nicht.


    Schönen Abend

    Alexander Schell
     

  9. #9
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von dzyan Beitrag anzeigen
    Da habt Ihr sicher recht mit public, static und private - nur löst weder das eine noch das andere das Problem:
    Ich hatte dir aber bereits in meiner ersten Antwort verraten was du machen mußt... Du solltest bei Gelegenheit mal lesen was die Leute schreiben oder nachfragen wenn du das nicht vestehst.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  10. #10
    dzyan dzyan ist offline Mitglied
    Registriert seit
    Oct 2008
    Ort
    Steiermark (Österreich)
    Beiträge
    20
    Du benötigst 2 Instanzen der DrehFB Klasse...
    Ich habe viele Instanzen der Klasse (je nachdem wie viele Mannschaften es sind):
    5 oder 6 oder 9 oder 14 oder 16 oder ...

    Code :
    1
    
    mannschaften[mNr] = new DrehFB();

    Aus a und b werde ich nicht schlau ?
    Es müssen bei der 1.Auswahl mit allen vorhandenen Mannschaften verglichen werden, die es gibt
    und das selbe auch für die 2. Auswahl...

    Deshalb ist das Ganze für mich etwas schwierig...
    Geändert von dzyan (01.11.08 um 20:06 Uhr)
     

  11. #11
    DealeyLama DealeyLama ist offline Mitglied Silber
    Registriert seit
    Jan 2005
    Beiträge
    91
    Hallo,

    es wäre vielleicht eine gute Idee, die Eingabe der Daten von der Klasse zu trennen...
    Außerdem glaube ich, daß deine statischen Elemente da nicht viel sinn machen; speichere die Instanzen lieber in einem geeigneten Container...

    Was soll das eigentlich werden? Eine Spiel-Übersicht?

    Schönen Abend

    Alexander Schell
     

  12. #12
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von dzyan Beitrag anzeigen
    Ich habe viele Instanzen der Klasse (je nachdem wie viele Mannschaften es sind):
    5 oder 6 oder 9 oder 14 oder 16 oder ...
    Und wo hast du die instanziiert? Das ist jedenfalls in dem Codeschnipsel nicht zu sehen.
    Zitat Zitat von dzyan Beitrag anzeigen
    Code :
    1
    
    mannschaften[mNr] = new DrehFB();

    Aus a und b werde ich nicht schlau ?
    Wo sind denn deine Instanzen? Du mußt 2 von deinen Instanzen aus dem Array hernehmen um deren mannschaft Attribut miteinander vergleichen zu können. a und b sind 2 Instanzen der Klasse, es war nur ein Beispiel.
    Zitat Zitat von dzyan Beitrag anzeigen
    Es müssen bei der 1.Auswahl mit allen vorhandenen Mannschaften verglichen werden, die es gibt
    und das selbe auch für die 2. Auswahl...[

    Deshalb ist das Ganze für mich etwas schwierig...
    Dann brauchst du evtl. eine Schleife?

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  13. #13
    dzyan dzyan ist offline Mitglied
    Registriert seit
    Oct 2008
    Ort
    Steiermark (Österreich)
    Beiträge
    20
    das mit der Schleife war sowieso meine allererste Idee... habe ich aber wegen der If-Abfrage dann wieder verworfen.

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    for (int i = 0; i < mNr; i++)   //oder   for (int i = 0; i < mannschaften.length; i++) 
    if ((ausw1.compareTo(mannschaften[i].mannschaft) == 0) && (ausw2.compareTo(mannschaften[i].mannschaft)) == 0);
     
     
    Scanner eingabe11 = new Scanner(System.in);
    Scanner eingabe12 = new Scanner(System.in);
    ...

    Funktioniert leider so nicht. Dachte nicht, dass man für eine Inhaltsüberprüfung
    (contains) eine Schleife braucht, dachte mir, das könnte Java auch einfach lösen.
     

  14. #14
    DealeyLama DealeyLama ist offline Mitglied Silber
    Registriert seit
    Jan 2005
    Beiträge
    91
    Hallo,

    sag doch einfach mal was Du genau machen möchtest und füg mal Deinen gesamten Code hier ein, damit man sich das mal im Ganzen anschauen kann und nicht nur Schnippsel sieht...
    Das könnte die Sache vielleicht ein wenig einfacher machen...

    Schönen Abend

    Alexander Schell
     

  15. #15
    dzyan dzyan ist offline Mitglied
    Registriert seit
    Oct 2008
    Ort
    Steiermark (Österreich)
    Beiträge
    20
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    552
    553
    554
    555
    556
    557
    558
    559
    560
    561
    562
    563
    564
    565
    566
    567
    568
    569
    570
    571
    572
    573
    574
    
    import java.io.*;
    import java.util.*;
     
     
    public class DrehFB
    {
        // Attribute:
        public String mannschaft;
        public int spiele;
        public int freispiele;
        public int aus;
        public int gTore;
        public int bTore;
        public int torDiff;
        public int punkte;
        
        // Konstruktor1:
        public DrehFB()
                   { anzMannschaften++; }
        
        // Konstruktor2:    
        public DrehFB(String m, int s, int fs, int a, int g, int b, int t, int p)
        { 
            mannschaft = m;
            spiele = s;
            freispiele = fs;
            aus = a;
            gTore = g;
            bTore = b;
            torDiff = t;
            punkte = p;
        }
        
        /*
        public String get_ms()
        {
            return this.mannschaft;
        }
        */
            
        static int auslosungsVA = 0;
        static int auslosungsLL1 = 0;
        static int auslosungsLL2 = 0;
        static String turnierNummer;
        static int nMa = 0;
        static int anzMannschaften = 0;
        static final int MANNSCHAFTEN_MAX = 5;
        static DrehFB[] mannschaften = new DrehFB[MANNSCHAFTEN_MAX];
        
        
        public static void main (String[] argv)
        {   
            boolean ende = false;
            
            turnierNummer = argv[0];
            System.out.println("\n<<< " + argv[0] + ". internationales Dreh-Fußball-Turnier >>>");
            System.out.println("================================================");
                
            do
            {
                // Menue-Ausgabe:
                System.out.println("\nHauptmenue:");
                System.out.println("===========");
                System.out.println("\n1) Neue Mannschaften eingeben");
                // System.out.println("2) Mannschaften löschen");
                System.out.println("3) Tabelle anzeigen");
                System.out.println("4) Auslosung");
                System.out.println("5) Lucky-Looser-Auslosung");
                // System.out.println("6) Play-Off");
                // System.out.println("7) Final-Spiele");
                System.out.println("8) Spiel-Ergebnisse eingeben");
                System.out.println("9) Tabelle ausdrucken");
                System.out.println("\n0) Programm beenden");
                
                try
                {
                    // Benutzereingaben lesen:
                    System.out.println("\nAuswahl: ");
                    Scanner eingabe = new Scanner(System.in);
                    int auswahl = eingabe.nextInt();
                        
                    // Benutzereingaben verarbeiten:
                    switch (auswahl)
                    {
                        case 1:
                            /* if (anzMannschaften == MANNSCHAFTEN_MAX)
                            {   
                                System.out.println("\nDie Mannschaften wurden schon eingeben \n"); 
                                break; 
                            } */
                            
                            System.out.println("\nNeue Mannschaften eingeben:");
                            System.out.println("===========================");
                            
                            while (anzMannschaften < MANNSCHAFTEN_MAX && anzMannschaften >= 0)
                            { anzMannschaften = neueMannschaft(anzMannschaften); }
                            break;                  
                        
                        /*
                        case 2:
                            anzMannschaften = loeschen(anzMannschaften, mannschaftsWahl(anzMannschaften));
                            break;
                        */
                        
                        case 3:
                            tabelleAnzeigen(anzMannschaften);
                            break;                                  
                            
                        case 4:
                            System.out.println("\nAuslosung der Mannschaften:");
                            System.out.println("===========================");
                            
                            if (auslosungsVA == 0) 
                            { auslosung(anzMannschaften); }
                            else
                            { System.out.println("Es wurde schon ausgelost "); }
                            break;
                            
                        case 5:
                            System.out.println("\nLucky-Looser-Auslosung:");
                            System.out.println("=======================");
                            
                            if (auslosungsLL1 == 1 && auslosungsLL2 == 1) 
                            { auslosungLL(anzMannschaften); }
                            else
                            { System.out.println("Es wurde noch nicht ausgelost oder Lucky-Looser wurden schon ausgelost "); }
                            break;
                        
                        case 8:
                            if (nMa == 1)
                            { spielergenisseEingeben(anzMannschaften); }
                            
                            else
                            { System.out.println("\nEs wurden noch keine Mannschaften eingegeben \n");  }
                            break;
                            
                        case 9:
                            if (nMa == 1)
                            { Drucken.printTabelle2(anzMannschaften); }
                            else
                            { System.out.println("\nEs wurden noch keine Mannschaften eingegeben "); }
                            break;  
                            
                        case 0:
                            System.out.println();
                            System.out.println("Wirklich\t Beenden ?");
                            System.out.println("999\t\t für Beenden eingeben ");
                            System.out.println();
                            Scanner beenden = new Scanner(System.in);
                            int be = beenden.nextInt();
                            
                            if (be == 999)
                            {
                                System.out.println("\nProgramm beendet......\n");
                                ende = true;
                                break;
                            }
                            break;
                            
                        default: 
                            System.out.println("\nMenue-Punkt nicht vorhanden ");
                            break;
                    }
            
                } catch (Exception e) // bei falscher Eingabe
                { System.out.println(); System.out.println("\nNur Zahlen eingeben \n"); 
                  e.printStackTrace(); }
            } while (!ende);        
        }
     
        
        // Methode eingeben():
        public boolean eingeben()
        {
            try
            {
                Console console = System.console();
                if (console == null) 
                {
                    System.err.println("Mannschaftsnamen eingeben ");
                    return false;
                }
                            
                    mannschaft = console.readLine("Neue Mannschaft eingeben: ");
                    // index = anzMannschaften;
                            
                return true;
                
             } catch (Exception e)
             { return false; }       
        }
        
        // Methode neueMannschaft():
        static int neueMannschaft(int mNr)
        {   
            nMa = 1;
            auslosungsVA = 0;
            mannschaften[mNr] = new DrehFB();
            
            while (!mannschaften[mNr].eingeben())     
            // ist das Gleiche wie: while (mannschaften[mNr].eingeben() == false)
            {
                System.out.println("Fehlerhafte Eingabe ");
            }
            
            return (mNr + 1);
        }
        
        // Methode tabelleAnzeigen():
        static void tabelleAnzeigen(int mNr)
        {   
            Arrays.sort(mannschaften, new Comparator<DrehFB>() 
            {           
                public int compare(DrehFB o1, DrehFB o2) 
                {                
                    if(o1.torDiff > o2.torDiff) 
                    { return -1; }
                         
                    else if(o1.torDiff < o2.torDiff) 
                    { return 1; }    
                    
                    else
                    { return 0; }   
                }           
            } );
            
            Arrays.sort(mannschaften, new Comparator<DrehFB>() 
            {           
                public int compare(DrehFB o1, DrehFB o2) 
                {                
                    if(o1.spiele < o2.spiele) 
                    { return -1; }
                                     
                    else if(o1.spiele > o2.spiele) 
                    { return 1; }    
                                
                    else
                    { return 0; }   
                }           
            } );
            
            Arrays.sort(mannschaften, new Comparator<DrehFB>()
            {
                public int compare(DrehFB o1, DrehFB o2) 
                {
                    if(o1.punkte > o2.punkte) 
                    { return -1; }
                                 
                    else if(o1.punkte < o2.punkte) 
                    { return 1; }    
                            
                    else
                    { return 0; }   
                }           
            } );
                
            System.out.println("\nMannschafts-Tabelle:");
            System.out.println("====================\n");
            System.out.println("\tMS\t\tSP\tFSP\tGT\tBT\tTD\tPT\n");
            
            int z = 0;
            
            for (int i = 0; i < mNr; i++)
            {
                if (mannschaften[i].aus == 1 && z == 0)
                { System.out.println("-----------------------------------------------------------------"); z++; }
                
                System.out.print((i+1) + ")\t");
                System.out.println(mannschaften[i].tabelle());          
            }       
        }
        
        // Methode tabelle():
        public String tabelle()
        {
            String text; 
            
            if (mannschaft.length() > 7)
            { text = mannschaft + "\t" + spiele + "\t" + freispiele + "\t" + gTore + "\t" + bTore + "\t" + torDiff + "\t" + punkte; }
            else
            { text = mannschaft + "\t\t" + spiele + "\t" + freispiele + "\t" + gTore + "\t" + bTore + "\t" + torDiff + "\t" + punkte; }
            
            return text;
        }
        
        // Methode mannschaftsWahl();
        static int mannschaftsWahl(int mNr)
        {
            boolean ende = false;
            short auswahl = 0;
            
            do
            {
                tabelleAnzeigen(mNr);
                
                try
                {
                    System.out.println("\n Auswahl:");
                    Scanner eingabe = new Scanner(System.in);
                    auswahl = eingabe.nextShort();
                    
                    if (auswahl > 0 && auswahl <= mNr)
                    ende = true;
                    
                    // else if (auswahl == 999)
                    // { ende = true; break; }
                    
                    else
                    System.out.println("Ungueltige Auswahl ");
                    
                } catch (Exception e)
                { System.out.println("Zahl eingeben "); }
            } while (!ende);
            
            return (auswahl - 1);
        }
        
        // Methode loeschen():
        static int loeschen(int mss, int index)
        {   
            for (int i = index; i < (mss - 1); i++)
            { mannschaften[i] = mannschaften[i + 1]; }
            
            mannschaften[mss - 1] = null;
                    
            return (mss - 1);       
        }
        
        // Methode auslosung(Auslosung der Mannschaften mit Zufallszahlen):
        static void auslosung(int mNr)
        {
            auslosungsVA = 1;
            auslosungsLL1 = 1;
            
            // Zufallszahlen generieren
            int zfz; 
            int[] zufallszahl = new int[mNr]; 
            Random random = new Random(); 
            
            for (int i = 0; i < mNr; i++) 
            { 
                zfz = random.nextInt(mNr);             // oder: zfz = random.nextInt(mNr + 1);
                zufallszahl[i] = zfz; 
                
                // Doppelte ausschließen:
                for (int j = 0; j < i; j++)
                {
                    if (zufallszahl[j] == zfz)         // || zufallszahl[j] == 0)
                    { 
                        i--; 
                        break; 
                    } 
                }            
            }
            
            // Gerade Auslosung
            if ((mNr % 2) == 0)
            {
                for (int i = 0; i < mNr; i++)
                {               
                    System.out.print(mannschaften[zufallszahl[i]].mannschaft);
                    System.out.print("\tgegen\t");
                    System.out.print(mannschaften[zufallszahl[i + 1]].mannschaft);
                    System.out.println();
                    i++;          
                }       
            }
            
            // Ungerade Auslosung
            else 
            {
                int schlussZahl = 0;
                
                for(int i = 0; i < (mNr - 1); i++)
                {
                    System.out.print(mannschaften[zufallszahl[i]].mannschaft);
                    System.out.print("\tgegen\t");
                    System.out.print(mannschaften[zufallszahl[i + 1]].mannschaft);
                    System.out.println();
                    schlussZahl = zufallszahl[i + 2];
                    i++;                        
                }       
                
                System.out.println();  
                System.out.print(mannschaften[schlussZahl].mannschaft + "\thaben ein Freispiel ");
                System.out.println();
                
                mannschaften[schlussZahl].spiele = mannschaften[schlussZahl].spiele + 1;
                mannschaften[schlussZahl].freispiele = mannschaften[schlussZahl].freispiele + 1;
                mannschaften[schlussZahl].punkte = mannschaften[schlussZahl].punkte + 3;
                            
                // mannschaften[schlussZahl].torDiff = (mannschaften[schlussZahl].gTore - mannschaften[schlussZahl].bTore);
            }        
        }
        
        // Methode auslosungLL(Auslosung der Lucky-Looser mit Zufallszahlen):
        static void auslosungLL(int mNr)
        {
            auslosungsLL1 = 0;
            auslosungsLL2 = 0;
            
            // Gerade Auslosung
            String[] temporary = new String[mNr / 2];
            int k = 0;
                
            for(int i = 0; i < mNr; i++)
            { 
                if(mannschaften[i].punkte == 0)
                { temporary[k] = mannschaften[i].mannschaft; k++; }
            }
                
            int zfz; 
            int[] zufallszahl = new int[mNr]; 
            Random random = new Random(); 
            
            for (int i = 0; i < temporary.length; i++) 
            { 
                zfz = random.nextInt(temporary.length);             // oder: zfz = random.nextInt(mNr + 1);
                zufallszahl[i] = zfz; 
                
                // Doppelte ausschließen:
                for (int j = 0; j < i; j++)
                {
                    if (zufallszahl[j] == zfz)         // || zufallszahl[j] == 0)
                    { 
                        i--; 
                        break; 
                    } 
                }            
            }
                
            if ((temporary.length % 2) == 0) 
            {
                for (int i = 0; i < temporary.length; i++)
                {               
                    System.out.print(temporary[zufallszahl[i]]);
                    
                    if (i % 2 == 0)
                    { System.out.print("\tgegen\t"); }   
            
                    if (i % 2 != 0)
                    { System.out.println(); } 
                } 
            }            
            
            // ungerade Auslosung
            else 
            {
                int i;
                
                for (i = 0; i < temporary.length; i++)
                {               
                    System.out.print(temporary[zufallszahl[i]]);
                    
                    if (i % 2 == 0)
                    { System.out.print("\tgegen\t"); }   
            
                    if (i % 2 != 0)
                    { System.out.println(); } 
                }
                
                System.out.print(temporary[zufallszahl[i - 1]] + "\thaben ein Freispiel ");
                System.out.println();
                
                for (int p = 0; p < mNr; p++)
                {
                    if(mannschaften[p].mannschaft == temporary[zufallszahl[i - 1]])
                    {
                        mannschaften[p].spiele = mannschaften[p].spiele + 1;
                        mannschaften[p].freispiele = mannschaften[p].freispiele + 1;
                        mannschaften[p].punkte = mannschaften[p].punkte + 3;
                                    
                        // mannschaften[schlussZahl].torDiff = (mannschaften[schlussZahl].gTore - mannschaften[schlussZahl].bTore);
                    }
                                
                }           
            }      
        }
        
        static void spielergenisseEingeben(int mNr)
        {
            try
            {
                System.out.println();
                System.out.print("1. Mannschaft eingeben: ");
                Scanner eingabe1 = new Scanner(System.in);
                String ausw1 = eingabe1.next();
                            
                System.out.print("2. Mannschaft eingeben: ");
                Scanner eingabe2 = new Scanner(System.in);
                String ausw2 = eingabe2.next();
                
                for (int y = 0; y < mNr; y++)
                if ((ausw1.compareTo(mannschaften[y].mannschaft) == 0) && (ausw2.compareTo(mannschaften[y].mannschaft)) == 0)
                // if (ausw1.contains(mannschaft) && ausw2.contains(mannschaft))
                // continue;
                {
                    Scanner eingabe11 = new Scanner(System.in);
                    Scanner eingabe12 = new Scanner(System.in);
                    
                    if (ausw1.length() > 7)
                    { System.out.print(ausw1 + "\tTore: "); }
                    else
                    { System.out.print(ausw1 + "\t\tTore: "); }
                    int ausw11 = eingabe11.nextInt();
                    
                    if (ausw2.length() > 7)
                    { System.out.print(ausw2 + "\tTore: "); }
                    else
                    { System.out.print(ausw2 + "\t\tTore: "); }
                    int ausw12 = eingabe12.nextInt();
                
                    int i, j;
                    for (i = 0; i < mNr; i++)
                    {
                        if (ausw1.compareTo(mannschaften[i].mannschaft) == 0)
                        {
                            mannschaften[i].gTore = (mannschaften[i].gTore + ausw11);
                            mannschaften[i].bTore = (mannschaften[i].bTore + ausw12);
                            mannschaften[i].torDiff = (mannschaften[i].gTore - mannschaften[i].bTore);
                            mannschaften[i].spiele = (mannschaften[i].spiele + 1);
                            break;
                        }               
                    }           
                
                    for (j = 0; j < mannschaften.length; j++)
                    {
                        if (ausw2.compareTo(mannschaften[j].mannschaft) == 0)
                        {
                            mannschaften[j].gTore = (mannschaften[j].gTore + ausw12);
                            mannschaften[j].bTore = (mannschaften[j].bTore + ausw11);
                            mannschaften[j].torDiff = (mannschaften[j].gTore - mannschaften[j].bTore);                  
                            mannschaften[j].spiele = (mannschaften[j].spiele + 1);                  
                            break;
                        }           
                    }           
                
                    if (ausw11 > ausw12)
                    {
                        mannschaften[i].punkte = (mannschaften[i].punkte + 3);
                    }
                
                    else if (ausw12 > ausw11)
                    {
                        mannschaften[j].punkte = (mannschaften[j].punkte + 3);
                    }
                
                    else
                    {
                        mannschaften[i].punkte = (mannschaften[i].punkte + 1);
                        mannschaften[j].punkte = (mannschaften[j].punkte + 1);
                    }
                
                    if (mannschaften[i].spiele == 2 && mannschaften[i].punkte == 0)
                    { mannschaften[i].aus = 1; }
                
                    if (mannschaften[j].spiele == 2 && mannschaften[j].punkte == 0)
                    { mannschaften[j].aus = 1; }
                
                }
                
                else 
                { 
                    System.out.println();
                    System.out.println("Mannschaft1 oder Mannschaft2 nicht vorhanden ");
                }
                
            } catch (Exception e)
            { e.printStackTrace(); };
            
            auslosungsVA = 0;
            auslosungsLL2 = 1;      
        }   
    }


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    
    import java.io.*;
    import java.net.*;
    import java.util.Date;
    import javax.print.*;
     
     
    public class Drucken extends DrehFB
    {
        // 1. Vorschlag (wird hier aber nicht verwendet) --> ignorieren
        static void printTabelle1() 
        {
        
            try 
            {
                PrintService service = javax.print.PrintServiceLookup.lookupDefaultPrintService();
                URL url = new URL(mannschaften[0].mannschaft);
                URLConnection con = url.openConnection();
                InputStream is = con.getInputStream();
                DocPrintJob job = service.createPrintJob();
                Doc doc = new javax.print.SimpleDoc(is, DocFlavor.URL.GIF, null);
                job.print(doc, null);
                
            } catch (PrintException e) { e.printStackTrace(); } 
              catch (IOException e) { e.printStackTrace(); }
        }
        
        
        // 2. Vorschlag
        static void printTabelle2(int mNr) 
        {
            String zeile, tabelle;
            Date now = new Date();
            tabelle = "/tux/jbprojects/DrehFB/bin/Tabelle";
            tabelle+= ("-" + nullVor(now.getHours()) + ":" + nullVor(now.getMinutes()) + ":" + nullVor(now.getSeconds()));
                        
            try
            {
                FileWriter datei = new FileWriter(tabelle);
                BufferedWriter datW = new BufferedWriter(datei);
                int z = 0;
                zeile = "          <<< " + DrehFB.turnierNummer + ". internationales Drehfußball-Turnier >>>";
                datW.write(zeile);
                datW.newLine(); 
                zeile = "          ================================================";
                datW.write(zeile);
                datW.newLine(); datW.newLine();
                zeile = "\n\tMS\t\tSP\tFSP\tGT\tBT\tTD\tPT\n";
                datW.write(zeile);
                datW.newLine();         
                
                for(int i = 0; i < mNr; i++)
                {               
                    if (mannschaften[i].aus == 1 && z == 0)
                    { 
                        zeile = "------------------------------------------------------------------";
                        datW.write(zeile);
                        datW.newLine();
                        z++; 
                    }
                    
                    zeile = (i+1) + ")";
                    zeile+= "\t" + mannschaften[i].mannschaft;
                    
                    if (mannschaften[i].mannschaft.length() > 7)
                    { zeile+= "\t" + mannschaften[i].spiele; }
                    else
                    { zeile+= "\t\t" + mannschaften[i].spiele; } 
                    
                    zeile+= "\t" + mannschaften[i].freispiele;
                    zeile+= "\t" + mannschaften[i].gTore;
                    zeile+= "\t" + mannschaften[i].bTore;
                    zeile+= "\t" + mannschaften[i].torDiff;
                    zeile+= "\t" + mannschaften[i].punkte;
                    datW.write(zeile);
                    datW.newLine();
                }
                
                datW.close();
                
            } catch (IOException e)
              { System.out.println("Fehler: " + e.getMessage()); e.printStackTrace(); }
            
            Runtime rt = Runtime.getRuntime();
            String[] command = {"/usr/bin/lpr", "/tux/jbprojects/DrehFB/bin/Tabelle"};
            
            try 
            {
                Process print = rt.exec(command);
                print.waitFor();
                System.out.println("\nTabelle wird gedruckt...\n");
                
            } catch (InterruptedException e) 
              {System.err.println("Process interrupted..."); e.printStackTrace(); }
            
              catch (IOException e) 
              {System.err.println("Process interrupted..."); e.printStackTrace(); }
        }
        
        // Voranstellen einer 0 bei einstelligen Zahlen
        static String nullVor(int i)
        {
            if (i < 10) 
            { return "0" + String.valueOf(i); }
            
            else 
            { return String.valueOf(i); }
        }
    }
     

Ähnliche Themen

  1. Progrämmchen zur Überprüfung von offenen Objekten?
    Von DrMueller im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 16.02.10, 12:37
  2. [C++] Überprüfung einer cin - Eingabe
    Von lowlix im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 15.07.09, 20:57
  3. Textbox Probleme bei Eingabe / Überprüfung
    Von Miky im Forum .NET Windows Forms
    Antworten: 9
    Letzter Beitrag: 29.06.09, 20:51
  4. Hangman mit Klassen und Objekten
    Von sk4r im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 19.04.05, 18:29
  5. Array von Klassen-Objekten
    Von mage im Forum PHP
    Antworten: 4
    Letzter Beitrag: 29.05.02, 17:33