2017-08-30 4 views
-3

Also sagen wir, ich habe eine Schachfigur, die an der Stelle "c4" ist, also in der 3. Spalte und der 4. Reihe. Wie würde man diese "c4" Saite lesen und dann auf der Tafel markieren, dass ein Stück da ist. Ich habe eine für Schleife gedacht, die für Zeichen liest und eine andere, die für Zahlen liest, aber nicht sicher, wie man markiert, dass ein Stück an einem Ort wie c4 ist. Irgendwelche Ideen/Ideen, um mich in die richtige Richtung zu schieben?Lesen und Speichern einer Zeichenfolge in Java

+2

Das "' "" c4 "' 'in seine Spalten-/Zeilenkomponenten aufzuteilen, sollte nicht schwer sein. Was meinst du mit "Markierung an der Tafel"? – f1sh

+1

Sie sollten sich [ask] und [help/on-topic] ansehen. – pvg

+1

Was ist Ihre aktuelle Implementierung? Was repräsentiert das Board und was repräsentiert, wo du markierst, dass es da ist? Jemand würde dir gerne helfen Ich bin mir sicher, aber es gibt nicht wirklich genug, um von hier weg zu gehen – Rafa

Antwort

0

Das hängt wirklich davon ab, was Sie sind und sind in dieser Situation nicht garantiert. Weißt du eigentlich, der erste Buchstabe wird immer ein Buchstabe sein? Was ist dein Nummernlimit?

Wenn Sie garantiert sind, dass der erste immer ein Charakter ist, wie in einem Schachbrett (ein 8x8 Gitter), dann können Sie einfach eine einfache myStr.charAt(0) machen, etwas mit diesem Charakter tun, dann ersetzen, was dort war und den Rest a la myStr.replace(oldChar, '') konvertieren und mit Integer.parseInt() analysieren.

Wenn Ihre Daten nicht garantiert und viel komplizierter sind, werden Sie Ihre Zeichenfolge in Teile zerlegen, analysieren, was Sie brechen, und etwas mit den Daten tun. Zum Beispiel, wenn ich die Zeichenfolge "hh88" erhalten würde, würde ich anfangen, indem ich finde, wo meine Zahlen anfangen, diese zwei Teile trennend, und etwas mit den Daten von dort tun. Dieselbe Idee gilt, wenn Sie nicht den gleichen Auftrag haben, d. H. "8c" war ein gültiger String-Eintrag, der Unterschied besteht hier darin, dass Sie identifizieren müssen, wo sich die einzelnen Komponenten befinden.

+0

Es ist garantiert, dass ein Buchstabe ist immer zuerst –

+0

Also myStr, charAt (0) wird das erste Zeichen erhalten. Was wird die Integer.parseInt() tun? –

+0

Dann sollte das obige gut funktionieren, mehr oder weniger identifizieren, wo die Buchstaben aufhören und Zahlen enden und brechen Sie Ihre Zeichenfolge auf diese Weise. 'substring',' replace' und 'split' (wenn Sie ein Trennzeichen in der eingegebenen Zeichenfolge haben) funktionieren alle gut. – swiftzor

2

Sie werden wahrscheinlich wollen diese Werte mit einem 2D-Array speichern, wie so:

bool[][] board = new bool[8][8];

Wie für die Zeichenfolge dort ein viele Möglichkeiten, lesen Sie es gehen könnte. Ich würde charAt verwenden, um die einzelnen Zeichen herauszunehmen, dann den ersten durch eine switch-Anweisung setzen, um seinen numerischen Wert zu finden.

String input = "c4" 
int row = Character.getNumericValue(input.charAt(1)); 
char columnChar = input.charAt(0); 
int column; 
switch (Character.toLowerCase(input.charAt(1)) { 
    case 'a': 
     column = 1; 
    case 'b': 
     column = 2; 
    // etc... 
} 
board[column - 1][row - 1] = true; // Fill the board, subtracting one to account for arrays indexing from zero 

Hier habe ich eine Reihe von bools Spur zu halten, aber natürlich werden Sie etwas komplizierter zu verfolgen verschiedene Teile benötigen. Möglichkeit, eine ChessPiece Klasse zu erstellen und sie zu erweitern, um jedes Stück zu erstellen, wäre hilfreich.

Verwandte Themen