Punkte Spiel

Diskutiere Punkte Spiel im Hausaufgaben Bereich.
Kirby_Sike

Kirby_Sike

Ich habe das Gefühl ich bin blind :( Aus irgendeinem Grund ist das Counter Array immer 0, woran liegt dass?

Java:
import java.util.Arrays;
import java.util.Scanner;

public class Zaehler {

        @SuppressWarnings("resource")
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);  
            int [] counter = new int[args.length]; //Zähler-Array
            String nameInput = "a";
           
            while(nameInput == "") {
                nameInput = sc.nextLine();
                int pointInput = sc.nextInt();
                int find = findIndex(args, nameInput);
                counter[find]+= pointInput;
                }

            System.out.print(Arrays.toString(counter));
            for(int i=0; i < args.length; i++) {
                System.out.println(args[i] + ":" + counter[i]);
            }
        }
       
        // Function to find the index of an element
        public static int findIndex(String arr[], String t)
        {
            for (int i = 0; i < arr.length; i++) {
            if (arr[i] == t) { // ist das (i+1)-te Element aus arr gleich t?
                return i;      // dann gib den Index i zurück
            }
        }
        return -1; // t nicht gefunden -> -1 zurück.
        }

    }
 
Kirby_Sike

Kirby_Sike

Also ich habe mal meinen Code etwas angepasst, jedoch wird bis jetzt nur ein Wert korrekt ausgegeben:

12673

Hier der Code:
Java:
import java.util.Arrays;
import java.util.Scanner;

public class Zaehler {

        @SuppressWarnings("resource")
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);  
            int [] counter = new int[args.length]; //Zähler-Array
            String nameInput = "a";
           
            while(nameInput.equals("") == false) {
                nameInput = sc.nextLine();
                if(nameInput.equals("")) {
                    break;
                }else {
                int pointInput = sc.nextInt();
                int find = findIndex(args, nameInput);
                counter[find]+= pointInput;
                }
                }

            System.out.print(Arrays.toString(counter));
            for(int i=0; i < args.length; i++) {
                System.out.println(args[i] + ":" + counter[i]);
            }
        }
       
        // Function to find the index of an element
        public static int findIndex(String arr[], String t)
        {
            for (int i = 0; i < arr.length; i++) {
            if (arr[i].equals(t)) { // ist das (i+1)-te Element aus arr gleich t?
                return i;      // dann gib den Index i zurück
            }
        }
        return -1; // t nicht gefunden -> -1 zurück.
        }

    }
 
mihe7

mihe7

Nimm
Java:
while (!nameInput.isEmpty()) {
Das liest sich schöner.

Zum Problem: sollst Du das mit nextLine() lösen? Wenn ja: Scanner#nextInt() belässt das Zeilenende im Puffer, so dass das darauffolgende nextLine() einen leeren String zurückgibt.
 
mihe7

mihe7

Und was soll das: String nameInput = "a"; ? Warum machst Du nicht gleich ein String nameInput = sc.nextLine(); ?
 
Kirby_Sike

Kirby_Sike

Zum Problem: sollst Du das mit nextLine() lösen? Wenn ja: Scanner#nextInt() belässt das Zeilenende im Puffer, so dass das darauffolgende nextLine() einen leeren String zurückgibt.
Nicht umbedingt ich hatte mir das so überlegt, oder soll ich es lieber nur mit sc.next() machen?

Und was soll das: String nameInput = "a"; ? Warum machst Du nicht gleich ein String nameInput = sc.nextLine(); ?
Weil ich dachte wenn ich es so mache, dann betritt das Programm doch die Schleife und der Wert wird erneut eingelesen
 
Kirby_Sike

Kirby_Sike

Ich verstehe nicht ganz xD Also wenn ich doch den String for der Schleife mit " " initialisiere ist es doch ok in der Schleife dann dafür einen Wert einzulesen? Was ich nicht ganz nachvollziehen kann, ist warum die Schleife nur 1 mal durchlaufen wird und die restlichen Werte im Array somit = 0 sind
 
Thema: 

Punkte Spiel

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben