Ich möchte den Benutzereingabetyp (Datentyp) von der Konsole in scala überprüfen? Ich muss überprüfen, ob die Eingabedaten Int, String, Double, Float sind.Wie überprüfe ich den Benutzereingabetyp (Datentyp) in scala?
0
A
Antwort
0
Anstatt den Typ zu überprüfen, würde ich den Eingang direkt verwenden. Versuchen:
val intput = scala.io.StdIn.readLine()
if (Try(input.toInt).isSuccess) ... // It is an integer
else if (Try(input.toFloat).isSuccess) ... // It is a float
else if (Try(input.toDouble).isSuccess) ... // It is a double
else ... // No need to convert to string
0
Sie können scala
‚s stärkste api match
case
für diesen Fall als
scala> def findDataType(x: Any) = x match {
| case x : String => println("String identified")
| case x : Int => println("Integer identified")
| case x : Float => println("Float identified")
| case x : Double => println("Double identified")
| case _ => println("DataType not identified")
| }
findDataType: (x: Any)Unit
scala> findDataType("abcd")
String identified
scala> findDataType(1)
Integer identified
scala> findDataType(1.0)
Double identified
scala> findDataType(1D)
Double identified
scala> findDataType(1f)
Float identified
scala> findDataType('c')
DataType not identified
verwenden können, lesen wir in der Konsole und gehen auf die obige Funktion als
scala> findDataType(scala.io.StdIn.readInt())
Integer identified
scala> findDataType(scala.io.StdIn.readLine())
String identified
scala> findDataType(scala.io.StdIn.readFloat())
Float identified
Bearbeitet
können Sie regex Muster verwenden, wie unten (I nur Integer verwendet habe und Schwimmer)
scala> val INT_PATTERN: String = "^[-+]?[0-9]*$"
INT_PATTERN: String = ^[-+]?[0-9]*$
scala> val FLOAT_PATTERN: String = "^[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?$"
FLOAT_PATTERN: String = ^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$
und die Funktion als
scala> def findDataType(value: Any) = {
| if(value.toString.matches(INT_PATTERN)) println("Integer identified")
| else if(value.toString.matches(FLOAT_PATTERN)) println("Float identified")
| else println("String identified")
| }
findDataType: (value: Any)Unit
Aufruf die Funktion mit scala.io.StdIn.readLine()
definieren, wie unten dem genauen Datentyp würde
scala> findDataType(scala.io.StdIn.readLine()) // 2 is entered
Integer identified
scala> findDataType(scala.io.StdIn.readLine()) //ab is entered
String identified
scala> findDataType(scala.io.StdIn.readLine()) // 2.1 is entered
Float identified
Dies kann für andere Datentypen auch getan werden.
Verwandte Themen
- 1. Konvertiere und überprüfe den Array-Datentyp
- 2. Wie überprüfe ich Nullzeiger Ausnahme in DATE Datentyp
- 3. multidimensionalen Datentyp in Scala
- 4. Wie überprüfe ich den Wert?
- 5. Schreiben Algebraische Datentyp in Scala
- 6. Wie schreibe ich eine Kurzschrift für einen Datentyp in Scala
- 7. Wie überprüfe ich den Inhalt einer TextBox?
- 8. Wie überprüfe ich den Wert von PrintDialog.AllowCurrentPage?
- 9. Wie überprüfe ich den Typ eines EclipseNode?
- 10. Wie überprüfe ich den Inhalt eines Arrays?
- 11. Über scala Doppel-Datentyp Präzision
- 12. Wie ändere ich den Datentyp, um den Datentyp nicht zu stimmen in Kriterienausdruck
- 13. Wie überprüfe ich den Wert von Auxiliary Flag in 8086
- 14. Wie überprüfe ich den Internetzugriff mit Bash-Skript in Linux?
- 15. Wie überprüfe ich den Datumstyp im Array in PHP
- 16. Wie überprüfe ich den Datumsbereich in datetimepicker jquery?
- 17. Wie überprüfe ich den Tag einer Datumszeichenkette in Python?
- 18. Wie überprüfe ich den Datenbanktyp in einer Rails Migration?
- 19. Wie überprüfe ich den Dateityp in Drupal 6 mit file_save_upload?
- 20. Wie überprüfe ich den Inhalt eines Verzeichnisses in git?
- 21. Wie überprüfe ich den Wert eines Feldes in einer Mongo-Datenbank?
- 22. Wie vergleiche ich den alten Datentyp Wert mit den neuen
- 23. Wie verwende ich den Blob-Datentyp in Postgres
- 24. Wie ändere ich den Datentyp für eine Spalte in MySQL?
- 25. Wie kann ich den Datentyp zur Laufzeit in C++ ermitteln?
- 26. Wie finde ich den realen Datentyp einer Variablen in R?
- 27. C#, Wie ändere ich den Datentyp beim Lesen in Ace.OleDB
- 28. Wie verwende ich den PostgreSQL 9.2 JSON-Datentyp in Django?
- 29. Wie überprüfe ich Pelican-Variablen
- 30. kenne den Datentyp in Swift
Das würde nicht funktionieren, da der Typ des Wertes, der von der Konsole gelesen wird, bereits ein String ist. Die Frage, ob der Datentyp aus der von der Konsole gelesenen Zeichenfolge ermittelt werden soll. –
@VivekKothari Nicht alles, was Sie von Console lesen, ist String, es hängt davon ab, wie Sie es lesen. zum Beispiel, wenn Sie wie scala.io.StdIn.readLine() lesen, dann ist es eine Zeichenfolge, aber wenn Sie lesen wie val intput = scala.io.StdIn.readInt() dann ist es eine ganze Zahl. Ich hoffe, du hast mich erwischt. Dann können Sie das val an die obige Funktion übergeben, um den Datentyp zu erhalten. :) –
Einverstanden. Die Frage ist nicht beschreibend genug, um zu veranschaulichen, wie die Daten gelesen werden. Wenn @sumit die readInt-Methode readFloat aufrufen würde, warum sollten Sie den Typ überhaupt ermitteln? Es ist schon von der gewünschten Art :) –