我想知道如何检查用户的输入是否是某种原始类型(我的意思是整数,字符串等......我认为它被称为原始类型?)。我希望用户输入内容,然后检查它是否是字符串,并相应地执行某个操作。 (JAVA) 我见过这样的代码:
if (input == (String)input) { (RANDOM STUFF HERE) }
或类似
if input.equals((String) input)
他们不工作。我想知道我怎么能只检查字符串?(已编辑) 我想知道是否有功能可以做到这一点?谢谢你的回答
编辑:在每个人的帮助下,我创建了我想要的固定代码:
package files;
import java.util.*;
public class CheckforSomething {
static Scanner inputofUser = new Scanner(System.in);
static Object userInput;
static Object classofInput;
public static void main(String[] args){
try{
System.out.print("Enter an integer, only an integer: ");
userInput = inputofUser.nextInt();
classofInput = userInput.getClass();
System.out.println(classofInput);
} catch(InputMismatchException e) {
System.out.println("Not an integer, crashing down");
}
}
}
不再需要答案了,谢谢!
答案 0 :(得分:3)
您可以尝试使用Regex:
String input = "34";
if(input.matches("^\\d+(\\.\\d+)?")) {
//okay
} else {
// not okay !
}
在这里,
^\\d+
表示输入以数字0-9开头,
()?
可能/或可能不会发生
\\.
允许输入中的一个句号
答案 1 :(得分:1)
使用 instanceof 根据您的类型检查类型和类型转换:
public class A {
public static void main(String[]s){
show(5);
show("hello");
}
public static void show(Object obj){
if(obj instanceof Integer){
System.out.println((Integer)obj);
}else if(obj instanceof String){
System.out.println((String)obj);
}
}
}
答案 2 :(得分:0)
class Main{
public static void main(String args[]){
String str;
Scanner sc=new Scanner(System.in);
int n,
boolean flag=false;
while(!flag){
try{
str=sc.nextLine();
n=Integer.parseInt(str);
flag=true;
}
catch(NumberFormatException e){
System.out.println("enter an no");
str=sc.nextLine();
}
}
}
}
答案 3 :(得分:0)
Scanner input = new Scanner (System.in);
if (input.hasNextInt()) System.out.println("This input is of type Integer.");
else if (input.hasNextFloat()) System.out.println("This input is of type Float.");
else if (input.hasNextLine()) System.out.println("This input is of type string.");
else if (input.hasNextDouble()) System.out.println("This input is of type Double.");
else if (input.hasNextBoolean()) System.out.println("This input is of type Boolean.");
else if (input.hasNextLong())
System.out.println("This input is of type Long.");
答案 4 :(得分:0)
讨厌6年后提出这个建议,但我找到了另一种可能的解决方案。
目前正在参加编码训练营,不得不解决类似的问题。我们引入布尔值,并根据try / catch块的结果更改其值。然后,我们使用简单的if语句检查布尔值。您可以省略打印件,而输入代码。外观如下:
import java.io.IOException;
import java.util.Scanner;
public class DataTypeFinder {
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(System.in);
String input = "";
while (true) { //so we can check multiple inputs (optional)
input = scan.nextLine();
if ("END".equals(input)) { //a way to exit the loop
break;
}
boolean isInt = true; //introduce boolean to check if input is of type Integer
try { // surround with try/catch
int integer = Integer.parseInt(input); //boolean is still true if it works
} catch (NumberFormatException e) {
isInt = false; //changed to false if it doesn't
}
boolean isDouble = true; //same story
try {
double dbl = Double.parseDouble(input);
} catch (NumberFormatException e) {
isDouble = false;
}
if (isInt) {
System.out.printf("%s is integer type%n", input);
} else if (isDouble) {
System.out.printf("%s is floating point type%n", input);
} else if (input.length() == 1) { //this could be useless depending on your case
System.out.printf("%s is character type%n", input);
} else if ("true".equals(input.toLowerCase()) || "false".equals(input.toLowerCase())) {
System.out.printf("%s is boolean type%n", input);
} else {
System.out.printf("%s is string type%n", input);
}
}
}
}
答案 5 :(得分:-1)
尝试使用Integer而不是int的instanceof函数。每个基元也有一个类
答案 6 :(得分:-1)
这可以吗?
class Test
{
public static void main(String args[])
{
java.util.Scanner in = new java.util.Scanner(System.in);
String x = in.nextLine();
System.out.println("\n The type of the variable is : "+x.getClass());
}
}
输出:
subham@subham-SVE15125CNB:~/Desktop$ javac Test.java
subham@subham-SVE15125CNB:~/Desktop$ java Test
hello
The type of the variable is : java.lang.String
答案 7 :(得分:-1)
但Zechariax希望使用try catch
得到答案您可以使用NumberForamtter和ParsePosition实现此目的。 看看这个解决方案
import java.text.NumberFormat;
import java.text.ParsePosition;
public class TypeChecker {
public static void main(String[] args) {
String temp = "a"; // "1"
NumberFormat numberFormatter = NumberFormat.getInstance();
ParsePosition parsePosition = new ParsePosition(0);
numberFormatter.parse(temp, parsePosition);
if(temp.length() == parsePosition.getIndex()) {
System.out.println("It is a number");
} else {
System.out.println("It is a not number");
}
}
}