Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen

Harald123

Mitglied
Guten Tag,

ich habe ein Projekt erstellt worin ich eine .jar Bibliothek importiert habe. Daraus möchte ich eine Klasse namens "Count" verwenden/ausführen.
Die Count enthält eine Zeile:

while (StdIn.hasNextChar()) {..}

wo die Ausführung meines Projektes stehen bleibt.

In der main Methode meiner Klasse wird ein String[] Objekt als Argument für die main Methode der Count Klasse weitergegeben. Es wird auch ein Scanner Objekt erstellt und initialisiert. Anschließend wird die main Methode von Count aufgerufen:

String[] a = new String[2];
a[0]="AB";
a[1]="AABBB";

Scanner StdIn;
StdIn = new Scanner("AABBB");

Count.main(a);


Falls diese Info benötigt wird: die Count Klasse kann nicht instantiiert werden.

Also die Frage ist wie kann das StdIn Scanner Objekt, welches in meiner Klasse erstellt wird, von der Count Klasse erkannt werden?

Ich habe, nach den Anweisungen aus den unteren Ressourcen, mit

public static Scanner StdIn

versucht, aber die Count Klasse erkennt das Objekt leider nicht. Die Count Klasse kann auch nicht bearbeitet werden, sonst hätte ich etwas wie MeineKlasse.StdIn in der Count Klasse verwenden können.

https://stackoverflow.com/questions/4646577/global-variables-in-java

https://stackoverflow.com/questions...bal-variable-without-closing-scan-constantly#

Vielen Dank!
 

MoxxiManagarm

Top Contributor
Ich würde niemanden empfehlen die main-Methode einer Klasse aus einer anderen aufzurufen. Erstelle für dein Vorhaben eine eigene Methode in Count und übergib den Scanner dieser Methode.
 

Harald123

Mitglied
Das wäre tatsächlich eine Lösung, aber leider kann Count nicht bearbeitet werden, da sie in der im Projekt eingeschlossenen .jar enthalten ist.. Oder gibt es dafür einen Umgehungsweg?
 

Harald123

Mitglied
vielen Dank für die Antwort. Ich habe weiter versucht und kann sagen, dass es eigentlich an meinem Unwissen liegt die Klasse aus der jar auszuführen als die Bibliothek. Die Bibliothek wurde von erfahrenen Entwicklern geschrieben: https://algs4.cs.princeton.edu/code/


Ich habe Schritt für Schritt verfolgt was passiert und habe festgestellt, dass die Zeile "while (StdIn.hasNextChar()) {..}" aus Count die Methode hasNextChar aus einer in der gleichen .jar enthaltenen Klasse StdIn aufruft, welche dann weiter die Methode readInput() aus der Klasse Scanner aufruft . Bei dieser Zeile aus der Mthode readInput()
try { n = source.read(buf); } wird
public int read(java.nio.CharBuffer cb) throws IOException;
aus der public Interface Readable aufgerufen.

Bei diesem Schritt bleibt die Ausführung stehen , jedoch ohne Fehler, es sieht nach einer endlosen Schleife aus. Unten rechts im NetBeans steht 'running' - siehe Screenshot.

Die Frage ist also wie die Count Klasse ausgeführt werden kann - ich habe es über diesen Weg versucht, welcher wie oben beschrieben hängen bleibt (Aufruf über Count.main() ergibt Fehler ) :

package algs;
import edu.princeton.cs.algs4.Count;

public class Algs {

public static void main(String[] args) {
String[] a = new String[2];
a[0]="AB";
Count.main(a);
}
}


Wenn jemand Zeit hätte sich das anzuschauen, wäre ich dankbar.
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    1,1 KB · Aufrufe: 29

mihe7

Top Contributor
Es wird von der Standardeingabe gelesen. Wenn dabei von der Tastatur gelesen wird, gibt es im Normalfall kein Ende (EOF). Daher "beendet" das Programm auch nicht.

Unter Windows könntest Du Strg+Z als EOF-Marker probieren. Ob das innerhalb von NetBeans funktioniert, kann ich Dir nicht sagen. Startest Du das Programm über die Eingabeaufforderung, sollte Strg+Z passen. Unter Linux wäre es Strg+D.

Ansonsten kannst Du in der Eingabeaufforderung die Standardeingabe umleiten, so wie es im Header von Count.java angegeben ist:

java Count alpha < input.txt
 

Harald123

Mitglied
Vielen Dank!

Folgendes habe ich erreichen können:
Umleitung der Standardeingabe funktioniert.

java -cp algs4.jar edu.princeton.cs.algs4.Count AB
AABBB
^Z
A 2
B 3

In Netbeans funktioniert das leider nicht, habe das gleiche eingegeben mit Strg+Z Tastenkombination und explizit Zeichen in das Output Fesnter eingetragen - es passiert nichts und bleibt beim 'running':
AA
AABB
^Z

Da suche ich weiter. Vielen Dank nochmal für die schnelle Hilfe :)
 

mihe7

Top Contributor
Wieso schreibst Du Dir die Klasse nicht einfach neu?

Java:
import edu.princeton.cs.algs4.Alphabet;

import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.io.UncheckedIOException;

public class CharCount {
    private final Alphabet alphabet;

    public CharCount(Alphabet alphabet) {
        this.alphabet = alphabet;
    }

    public int[] of(Reader reader) throws IOException {
        int[] count = new int[alphabet.radix()];
        int ch;
        while ((ch = reader.read()) != -1) {
            if (alphabet.contains((char) ch)) {
                count[alphabet.toIndex((char) ch)]++;
            }
        }
        return count;
    }

    public int[] of(String inp) {
        try {
            return of(new StringReader(inp));
        } catch (IOException ex) {
            throw new UncheckedIOException(ex);
        }
    }
}

Beispiel:
Java:
public static void main(String[] args) {
    Alphabet a = new Alphabet("AB");
    CharCount count = new CharCount(a);
    int[] result = count.of("AABBB");
    for (int i = 0; i < result.length; i++) {
        System.out.println(a.toChar(i) + " " + result[i]);
    }
}
 

Harald123

Mitglied
kann ich auch machen ja. Aber ich habe diese Klasse verwendet um deren Aufruf zum laufen zu bringen. (Habe inzwischen entdeckt, dass es mit Klasse Average noch einfacher ist). Mein Ziel ist es anhand diesen Erkenntnissen die anderen Klassen aus dem .jar auszuführen um so Algorithmen zu lernen.

Zum Thema EOF - ich habe, nach dem was ich gelesen habe, vor es mit einer anderen IDE zu testen, was scheinbar funktionieren sollte. Unter NetBeans 8.2 ist es auch nicht möglich "Console Type = External Terminal und External Terminal Type = Command Window" zu setzen, obwohl es laut einer Seite in dieser Version diese Möglichkeit geben sollte.
 

mihe7

Top Contributor
Mein Ziel ist es anhand diesen Erkenntnissen die anderen Klassen aus dem .jar auszuführen um so Algorithmen zu lernen.
Algorithmen lernt man nicht, indem man sie nur anwendet. Versuch doch einfach mal, die Algorithmen zu verstehen und sie dann selbst umzusetzen.

Objektiv muss man einfach sagen, dass eine Lib, die die Daten nur von der Standardeingabe entgegennimmt, keine gute Idee ist.
 

Harald123

Mitglied
Ich habe auch mit JDeveloper versucht, da verhält es sich gleich wie in NetBeans. Gibt es eine IDE, dass einen EOF marker akzeptiert, oder worin das Windows cmd als Konsole eingestellt werden kann?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
A Instance methods should not write to "static" fields Java Basics - Anfänger-Themen 4
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
B Static Attribute in einer Klasse, wie geht das? :O Java Basics - Anfänger-Themen 19
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
H Static Java Basics - Anfänger-Themen 5
K Ausgaben auf der Konsole (static Varible) Java Basics - Anfänger-Themen 9
S public static boolean Java Basics - Anfänger-Themen 4
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
L non-static Fehler Java Basics - Anfänger-Themen 16
S Klassenmethode ohne static Java Basics - Anfänger-Themen 2
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
D Methoden Scannervariablen in static Methoden Java Basics - Anfänger-Themen 5
P non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 6
V the static method should be accessed is a static way Java Basics - Anfänger-Themen 6
NormanPatrickBenner static non-static Java Basics - Anfänger-Themen 82
N Erste Schritte "non-static method" oder "XYZ can not be resolved" Java Basics - Anfänger-Themen 21
B Email versenden, muss Methode static sein? Java Basics - Anfänger-Themen 7
R static in der Methode Java Basics - Anfänger-Themen 2
E Problem mit static Methode Java Basics - Anfänger-Themen 4
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
D Das leidige Thema static.... Java Basics - Anfänger-Themen 15
Aprendiendo Interpreter-Fehler "non-static variable this cannot be referenced from a static context" Java Basics - Anfänger-Themen 2
T Problem mit static Java Basics - Anfänger-Themen 6
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
snipesss Was kann 'static'? Java Basics - Anfänger-Themen 4
H Variablen error: non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 4
M public static int in ActionListener Java Basics - Anfänger-Themen 6
J static verschachtelte Klassen und innere Klassen Java Basics - Anfänger-Themen 1
H Nicht Static Funktion ohne Objekt aufrufen? Java Basics - Anfänger-Themen 6
E Objekte und static Java Basics - Anfänger-Themen 2
K Methoden Methoden in Methoden -> static oder nicht? Java Basics - Anfänger-Themen 7
D Erklärung static boolean Java Basics - Anfänger-Themen 6
L Was genau macht "public static void" ? Java Basics - Anfänger-Themen 12
U Erste Schritte cannot be referenced from a static context Java Basics - Anfänger-Themen 1
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
O Zu viel static im Projekt Java Basics - Anfänger-Themen 9
F Static final Klasse Java Basics - Anfänger-Themen 0
N static und Objekt kombiniert?!? Java Basics - Anfänger-Themen 3
O Wann nutzt man static? Java Basics - Anfänger-Themen 19
B Klassen Eigene "non static" Klasse in Main verwenden! Java Basics - Anfänger-Themen 12
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
A Static variablen --- Anwendungsbereich Java Basics - Anfänger-Themen 11
B Erste Schritte Wie komme ich aus Static raus?!! Java Basics - Anfänger-Themen 4
V Static Methods Java Basics - Anfänger-Themen 5
W Compiler-Fehler "non-static method cannot be referenced"-Problem Java Basics - Anfänger-Themen 6
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
3 OOP static class in einer Klasse Java Basics - Anfänger-Themen 6
B static individuell "vererben"? Java Basics - Anfänger-Themen 8
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
T Static Fehler Java Basics - Anfänger-Themen 1
R public static void Rückgabe Java Basics - Anfänger-Themen 5
P Compiler-Fehler public static void main, Grundloses Problem Java Basics - Anfänger-Themen 4
A Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 6
W Variablen Automatisch static? Java Basics - Anfänger-Themen 3
O Warum muss ich static? Java Basics - Anfänger-Themen 6
O Static Java Basics - Anfänger-Themen 15
E non-static method und static context Java Basics - Anfänger-Themen 15
B non static interface Methode Java Basics - Anfänger-Themen 16
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
S Static void Methode Java Basics - Anfänger-Themen 12
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
O Main-Methode static modifier umgehen Java Basics - Anfänger-Themen 10
J Variablen non-static variable Java Basics - Anfänger-Themen 2
P Erste Schritte public oder static oder wie? Java Basics - Anfänger-Themen 7
J static - Methoden Java Basics - Anfänger-Themen 22
X Erste Schritte Methode ohne Static Java Basics - Anfänger-Themen 4
B Classpath static block - Verwirrung Java Basics - Anfänger-Themen 2
S Methoden Warum ist sleep static? Java Basics - Anfänger-Themen 9
K static, non-static Krise Java Basics - Anfänger-Themen 4
R Schlüsselworte static Methoden und Imports Java Basics - Anfänger-Themen 10
M Methoden "Non-static method xy cannot be referenced from a static context" Java Basics - Anfänger-Themen 20
J Probleme mit static generische Klasse Java Basics - Anfänger-Themen 6
S Aufruf Einer Methode aus einer anderen Klasse - Static Fehler Java Basics - Anfänger-Themen 4
W Methodenaufruf innerhalb einer Klasse - static vs. this Java Basics - Anfänger-Themen 3
K Objekt erstellen - error: non-static variable this cannot be referenced from a static context Java Basics - Anfänger-Themen 17
H non-static method cannot be referenced from a static context Java Basics - Anfänger-Themen 2
Y Gebrauch von static Java Basics - Anfänger-Themen 29
L Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 6
T getClass() im static Kontext Java Basics - Anfänger-Themen 12
S Frage zu public static Java Basics - Anfänger-Themen 29
M Problem mit Static Method Java Basics - Anfänger-Themen 8
H Methoden Static ? Java Basics - Anfänger-Themen 10
K Erste Schritte Zugiff ohne static Java Basics - Anfänger-Themen 5
X Static char Problem Java Basics - Anfänger-Themen 11
H static final vs. final static Java Basics - Anfänger-Themen 3
K Variablen Cannot make a static reference to the non-static field time Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben