Typerkennung < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 03:12 Do 15.11.2012 | Autor: | Maurizz |
Hi,
in meiner Aufgabenstellung soll eine Methode in der Lage sein zu erkennen ob ein array Eintrag ein int Wert ist. Jeder andere Wert soll false zurückgeben.
Aber wie? Sowas wie if ("xyz" != int) etc. geht ja nicht.
Bzw. ich brauche allgemein eine Anweisung die in der Lage ist ein Datentyp zu erkennen.
Vielleicht hat ja einer von euch Profis ein Tipp für einen Amateur:)
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:03 Do 15.11.2012 | Autor: | felixf |
Moin!
> in meiner Aufgabenstellung soll eine Methode in der Lage
> sein zu erkennen ob ein array Eintrag ein int Wert ist.
> Jeder andere Wert soll false zurückgeben.
> Aber wie? Sowas wie if ("xyz" != int) etc. geht ja nicht.
> Bzw. ich brauche allgemein eine Anweisung die in der Lage
> ist ein Datentyp zu erkennen.
> Vielleicht hat ja einer von euch Profis ein Tipp für
> einen Amateur:)
Da du nicht die vollstaendige Aufgabenstellung wiedergegeben hast, zwei Rueckfragen:
1) Ist die Eingabe ein String und es soll herausgefunden werden, ob es sich beim Inhalt des Strings um eine ganze Zahl handelt? Oder um etwas, was in den Datentyp int hereinpasst?
2) Oder soll erkannt werden, ob es sich beim Array-Eintrag um ein Object vom Typ Integer handelt?
LG Felix
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 12:39 Do 15.11.2012 | Autor: | Maurizz |
Aufgabe | Es sei ein n*n Kendoku Feld als 3darray... etc. |
Also in diesem Kendoku Feld gibt es Felder wo ein char sein MUSS und alle anderen müssen int (bis auf ein paar Ausnahmen dürfen whitespace sein) sein.
d.h wenn an den spezifischen Orten kein char dann false, rest wenn kein int dann false.
int[][][] kenken = {
{{ 11, '+'}, {0, 0}, {1, 0}},
{{ 2, '/'}, {0, 1}, {0, 2}},
{{ 20, '*'}, {0, 3}, {1, 3}},
{{ 6, '*'}, {0, 4}, {0, 5}, {1, 5}, {2, 5}},
{{ 3, '-'}, {1, 1}, {1, 2}},
{{ 3, '/'}, {1, 4}, {2, 4}},
{{240, '*'}, {2, 0}, {2, 1}, {3, 0}, {3, 1}},
{{ 6, '*'}, {2, 2}, {2, 3}},
{{ 6, '*'}, {3, 2}, {4, 2}},
{{ 7, '+'}, {3, 3}, {4, 3}, {4, 4}},
{{ 30, '*'}, {3, 4}, {3, 5}},
{{ 6, '*'}, {4, 0}, {4, 1}},
{{ 9, '+'}, {4, 5}, {5, 5}},
{{ 8, '+'}, {5, 0}, {5, 1}, {5, 2}},
{{ 2, '/'}, {5, 3}, {5, 4}}
}
Das ist zu überprüfen.
|
|
|
|
|
Hallo!
Dein Array ist von vornherein als INT-Array definiert, daher sind da ausschließlich INT-Werte drin abgelegt, und eine Typ-Abfrage wird immer INT liefern.
Um Zeichen wie Buchstaben mit einem Computer zu realisieren, gibt es Tabellen, die einem Zeichen einen Zahlenwert zuweisen. Die älteste und einfachste Tabelle dafür ist die ASCII-Tabelle, darin findest du, daß das Zeichen '*' dem Wert 42 entspricht.
Für den Computer ist daher
int i='*'
gleichbedeutend mit
int i=42
Es gibt zwei Möglichkeiten für dein Problem:
1.: Deine Zahlen sind immer kleiner als 42, dann kannst du nen einfachen Größenvergleich machen.
2.: Da INTs auch negative Zahlen können, weist du den Werten, die ein Zeichen enthalten sollen, einen negativen Wert zu, und codierst damit die Eigenschaft Zeichen/Zahl im Vorzeichen.
[#000000][/#000000]
Es kann aber auch sein, daß ich dich nu immernoch missverstanden habe, dann müßtest du nochmal konkret sagen, wie zwei Fälle aussehen, die du voneinander unterscheiden willst.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:23 Do 15.11.2012 | Autor: | Maurizz |
Um ganz konkret zu sein:
kenken is non-null and contains at least one entry (i.e. "row" in the first dimension)
each "row" contains a non-null 2D-array of type int[][] with at least two sub-entries of type int[]
each sub-entry in a row is non-null and has length 2
the first sub-entry in a row is a pair {result, operation}, where result is an integer number and operation is a char(acter)
operation must be one of '+', '-', '/', '*', ' ' (whitespace)
all other sub-entries (except for the first one) in a row must be pairs of positive int-numbers
if operation is ' ' (whitespace), then exactly one sub-entry must follow the {result, operation}-pair
if operation is '-' or '/', then exactly two sub-entries must follow the {result, operation}-pair
if operation is '+' or '*', then at least two sub-entries must follow the {result, operation}-pair
das sind die Punkte die ich abarbeiten muss. Ich muss also an gewissen Stellen den Datentyp überprüfen.
Wenn ich richtig verstanden habe kann ich die 5 char Zeichen an ihren numerischen Wert überprüfen lassen?
Ich denke das schaffe ich.
Wegen den Int Werten muss man es sich so überlegen: Jemand ist lustig ändert int kenken[][][] zu double kenken[][][] oder was auch immer und schreibt irgendwo nen double Wert hinein. Jetzt soll die Methode aber unabhängig davon was kenken den auch immer ist, es kann auch float kenken sien ist ja wayne, überprüfen ob dennoch nur ganze Zahlen vom int Wertebereich drin stehen. Vielleicht verkompliziere ich die Sache auch, wer weiß.
|
|
|
|
|
Hallo!
Jetzt wirds einfacher!
> the first sub-entry in a row is a pair {result,
> operation}, where result is an integer number and operation
> is a char(acter)
> operation must be one of '+', '-', '/', '*', ' '
> (whitespace)
> all other sub-entries (except for the first one) in a
> row must be pairs of positive int-numbers
die zweite Spalte, also das Element
kenken[i][0][1]
ist IMMER eins von '+', '-', '/', '*', ' ' und nie was anderes. Genauso bestehen die nachfolgenden Elemente IMMER aus zwei Zahlen, und nie aus Zeichen.
Daher brauchst du dir da keinen Kopf drum zu machen. Der Vergleich funktioniert genauso wie die Zuweisung:
if (kenken[i][0][1] == '/')
NumFollowingSubs=2
Theoretisch ist es egal, ob das nun ein INT oder ein FLOAT-Array ist.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:38 Do 15.11.2012 | Autor: | Maurizz |
Hey Moment!
if (kenken[i][0][1] == '/')
NumFollowingSubs=2
Die 2. Anweisung hab ich ja noch nie gesehen!
Überprüft der jetzt wirklich ob in [i][0][1] genau 2 Zahlen sind?? [mm] O_O
[/mm]
das würde bedeuten das ich mein halben Code löschen kann.
|
|
|
|
|
nee neee, das ist keine Anweisung. Die 2. Zeile sollte nur zur Veranschaulichung sein. Letztendlich brauchst du (vermutlich) ne Info, wieviele gültige Paare noch kommen, und laut deiner Aufgabe kommen nach nem '/' nur noch 2. Das könnte man in ner Variablen speichern, und das soll das bezwecken. Das ist alles.
|
|
|
|