Видимость переменных в методах - PullRequest
1 голос
/ 11 апреля 2020

Я работаю над программой управления студентами, в которой перечислены имена (VN), фамилии (NN) и степени (Noten) студентов / указанного студента после ввода его имени

В этом коде есть java метод, который не может получить доступ к объявленным массивам:

import java.util.Scanner;
import java.util.ArrayList;
public class Aufgabe1_Sulyman {

    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String NN[] = new String[30];
    String VN[] = new String[30];
    int Noten[] = new int[30];
    int anzahl;
    int option;
    int index;

    do {
        System.out.println("Die zur Verfügung gestellten Optionen: ");
        System.out.println("1) Eingabe Daten aller Schüler");
        System.out.println("2)Ausgabe Daten aller Schüler");
        System.out.println("3) Eingabe Daten eines Schülers");
        System.out.println("4) Ausgabe Daten eines Schülers");
        System.out.println("5) Notendurchschnittsberechnung");
        System.out.println("6) Suche nach Nachnamen eines Schülers");
        System.out.println("7) Beenden");
        option = sc.nextInt();
        switch(option) {
            case 1:
                eingabeAlle(VN, NN, Noten); 
            break;
            case 2:
                ausgabeAlle(VN, NN, Noten);
            break;
            case 3:
                System.out.println("Die Nummer des Schülers");
                index = sc.nextInt();
                eingabe(NN, VN, Noten, index);
            break; 
            case 4:
                ausgabe(VN, NN, Noten);
            break; 
            case 5:
                System.out.println("die Anzahl der Schüler: ");
                anzahl = sc.nextInt();
                durchschnitt(anzahl, Noten);
            break; 
            case 6:
                suche(NN);
            break; 
        }

    } while(option != 7);


}

    // Die Methoden
    public static void eingabeAlle(String[] VN, String[] NN, int[] Noten) {
        for (int i = 0; i < VN.length; i++) {
            Scanner sc = new Scanner(System.in);
            System.out.println("Geben Sie Den Vornamen des Schülers ein: ");
            VN[i] = sc.nextLine();
            System.out.println("Geben Sie den Nachnamen des Schülers ein: ");
            NN[i] = sc.nextLine(); 
            System.out.println("Geben Sie die Note des Schülers ein:");
            Noten[i] = sc.nextInt();
            // anzahl =+ VN;
            // int sum =+ VN[i];
         } 
    }
    public static void eingabe(String[] VN, String[] NN, int[] Noten, int i) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Geben Sie die Daten der Schüler ein:");
        System.out.println("Die notwendigen Daten sind: " + "\n" + "Nachnamen");
        NN[i] = sc.nextLine();
        System.out.println("Vornamen");
        VN[i] = sc.nextLine();
        System.out.println("Noten");
        Noten[i] = sc.nextInt();

    }
    public static void ausgabeAlle(String[] VN, String[] NN, int[] Noten) {
        for (int i = 0; i < NN.length; i++) {
        System.out.println("Die Note für den Schüler: " + NN[i]+ " " + VN[i] + "ist: " + Noten[i]);
    }
        }
    public static void ausgabe(String VN, String NN, int Noten) {
        System.out.println("Der Schüler" + NN + " "+ VN + " hat die Note" + Noten);

    }
    public static void durchschnitt(int anzahl,int[] Noten) {
        float d = 0.0F;
        for (int i = 0; i < Noten.length; i++) {
        d += Noten[i];
    }
    System.out.println("Der Durchschnitt der Noten aller Schüler ist: " + (d/anzahl));
    }

    public static void suche(String[] NN) {
        System.out.println("Der Nachname des Schülers: ");
        String name = sc.nextLine();
        for (int i = 0; i < NN.length; i++) {
            if (name.equalsIgnoreCase(NN[i])) {
                System.out.println(name+ " ist vorhanden");
            }
        }
    }

}

Проблема, с которой я сталкиваюсь, заключается в строках кода 37 и 84. Мой преподаватель указал, что это связано с:

Видимость переменных в методах

Если у вас есть какие-либо вопросы, дайте мне знать. Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 11 апреля 2020

Хорошо, что вы изучаете Java

Пожалуйста, добавьте новый объект Scanner в свой метод @ line 87 и параметры метода ausgabe должны быть изменены

 public static void ausgabe(String[] vN, String[] nN, int[] noten) {
        System.out.println("Der Schüler" + nN + " " + vN + " hat die Note" + noten);
    }

enter image description here

Полный код

import java.util.Scanner;
import java.util.ArrayList;

public class Aufgabe1_Sulyman {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String NN[] = new String[30];
        String VN[] = new String[30];
        int Noten[] = new int[30];
        int anzahl;
        int option;
        int index;

        do {
            System.out.println("Die zur Verfügung gestellten Optionen: ");
            System.out.println("1) Eingabe Daten aller Schüler");
            System.out.println("2)Ausgabe Daten aller Schüler");
            System.out.println("3) Eingabe Daten eines Schülers");
            System.out.println("4) Ausgabe Daten eines Schülers");
            System.out.println("5) Notendurchschnittsberechnung");
            System.out.println("6) Suche nach Nachnamen eines Schülers");
            System.out.println("7) Beenden");
            option = sc.nextInt();
            switch (option) {
            case 1:
                eingabeAlle(VN, NN, Noten);
                break;
            case 2:
                ausgabeAlle(VN, NN, Noten);
                break;
            case 3:
                System.out.println("Die Nummer des Schülers");
                index = sc.nextInt();
                eingabe(NN, VN, Noten, index);
                break;
            case 4:
                ausgabe(VN, NN, Noten);
                break;
            case 5:
                System.out.println("die Anzahl der Schüler: ");
                anzahl = sc.nextInt();
                durchschnitt(anzahl, Noten);
                break;
            case 6:
                suche(NN);
                break;
            }

        } while (option != 7);

    }

    // Die Methoden
    public static void eingabeAlle(String[] VN, String[] NN, int[] Noten) {
        for (int i = 0; i < VN.length; i++) {
            Scanner sc = new Scanner(System.in);
            System.out.println("Geben Sie Den Vornamen des Schülers ein: ");
            VN[i] = sc.nextLine();
            System.out.println("Geben Sie den Nachnamen des Schülers ein: ");
            NN[i] = sc.nextLine();
            System.out.println("Geben Sie die Note des Schülers ein:");
            Noten[i] = sc.nextInt();
            // anzahl =+ VN;
            // int sum =+ VN[i];
        }
    }

    public static void eingabe(String[] VN, String[] NN, int[] Noten, int i) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Geben Sie die Daten der Schüler ein:");
        System.out.println("Die notwendigen Daten sind: " + "\n" + "Nachnamen");
        NN[i] = sc.nextLine();
        System.out.println("Vornamen");
        VN[i] = sc.nextLine();
        System.out.println("Noten");
        Noten[i] = sc.nextInt();

    }

    public static void ausgabeAlle(String[] VN, String[] NN, int[] Noten) {
        for (int i = 0; i < NN.length; i++) {
            System.out.println("Die Note für den Schüler: " + NN[i] + " " + VN[i] + "ist: " + Noten[i]);
        }
    }

    public static void ausgabe(String[] vN, String[] nN, int[] noten) {
        System.out.println("Der Schüler" + nN + " " + vN + " hat die Note" + noten);

    }

    public static void durchschnitt(int anzahl, int[] Noten) {
        float d = 0.0F;
        for (int i = 0; i < Noten.length; i++) {
            d += Noten[i];
        }
        System.out.println("Der Durchschnitt der Noten aller Schüler ist: " + (d / anzahl));
    }

    public static void suche(String[] NN) {
        System.out.println("Der Nachname des Schülers: ");
        Scanner sc = new Scanner(System.in);
        String name = sc.nextLine();
        for (int i = 0; i < NN.length; i++) {
            if (name.equalsIgnoreCase(NN[i])) {
                System.out.println(name + " ist vorhanden");
            }
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...