Punkte Spiel

Kirby.exe

Top Contributor
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.exe

Top Contributor
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

Top Contributor
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

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

Kirby.exe

Top Contributor
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.exe

Top Contributor
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
 

Neue Themen


Oben