2017-02-02 3 views
0

Ich schreibe gerade ein Programm, wo es eine Textdatei mit mehreren Millionen Ziffern gibt, und ich muss es durchgehen, um eine zufällige Reihe von 6 Zahlen zu suchen (vom Benutzer eingegeben)). Es gibt mehrere Einschränkungen, die es schwierig machen.Java: Vergleiche in einer Textdatei machen

  1. Must BufferedReader verwendet
  2. Jeder Charakter kann nur einmal gelesen werden (ich habe es mit einem Bündel von verschachtelt zu arbeiten, wenn Aussagen, aber die Art, wie ich es tat diese Regel verletzt) ​​
  3. keine Methoden verwenden aus der String-Klasse (also kann ich die gelesenen Zeichen nicht zusammenfügen und mit der ursprünglichen Zeichenkette mit .equals() vergleichen). Ich habe die ursprüngliche Zeichenfolge bereits in die 6 einzelnen Zeichen aufgeteilt.

  4. Nicht erlaubt zu speichern Zeichen in ein Feld von jeder Art zu lesen, nur in Zeichengrößen (von denen sollten 6 dort sein)

Sobald eine Übereinstimmung gefunden wurde, ist es die Lage zu berichten an den Benutzer (ich muss nur eine Zählvariable behalten, die ich mit jedem gelesenen Zeichen inkrementiere) und weitermachen, bis das Ende der Datei erreicht ist. In der Datei können mehrere Übereinstimmungen vorhanden sein.

Jede Hilfe mit diesem wäre toll, ich bin ratlos, was zu tun ist.

+0

Ist das eine Frage oder eine Hausaufgabe? – byxor

+0

Es klingt, als hättest du Code dafür geschrieben, aber ich sehe keinen. –

Antwort

2

Sie haben eine haystack zu suchen, sagen 98712365478932145697 und ein needle, sagen 893 zu finden.

Wie wäre:

  • Verwendung BufferedReader.read() vom haystack ein Zeichen in einer Zeit
  • zu lesen, wenn das Zeichen das erste Zeichen in Ihrem needle ist, sollte sie in der ersten Zeichenvariable
    • Wenn das nächste Zeichen das zweite Zeichen in Ihrer needle ist, speichern Sie es in der zweiten Zeichenvariable, andernfalls, wenn es das erste Zeichen in Ihrem needle ist, beginnen Sie neu und speichern Sie es in der ersten Zeichenvariable
    • wenn das nächste Zeichen das dritte Zeichen in Ihrem needle ist, sollte sie in der dritten Zeichenvariable, sonst, wenn es das erste Zeichen in Ihrem needle ist, von vorn beginnen
    • etc
  • , wenn Sie das letzte Zeichen Variable füllen, haben Sie den needle im haystack gefunden haben, können Sie hier aufhören oder über und suchen Sie nach einem anderen Auftreten

ich werde nicht den Code schreiben, wie es ist ziemlich trivial und diese starten klingt wie Hausaufgaben, aber das sollte dir einen Schubs geben.

+1

Wir brauchen weniger Hausaufgabenlöser und mehr Leute wie Sie auf SO. Sie ermutigen _learning_, was gut ist. – byxor

Verwandte Themen