import java.util.*;
class Test{
private int intToken;
public Test(){
intToken = 0;
}
// A method that returns the last character of a String
// This here returns a string regardless of input
public String lastChar(String tok){
String token = String.valueOf(tok);
String strToken = token.substring(token.length()-1);
return strToken;
}
public static void main(String[]args){
Test test = new Test();
Scanner scan = new Scanner(System.in);
System.out.println("Enter a number to get its last number");
String value = scan.nextLine();
System.out.println(test.lastChar(value));
}
}
上述方法lastChar()
的代码适用于Integer
和String。由于我正在练习编程,我真的想创建一个返回String
或Integer
的方法,但在我希望检测输入是Integer
还是{{}的方法中1}}。
在创建方法之后,我首先尝试了
String
即使Scanner scan = new Scanner(tok);
scan.hasNextInt();
中有false
,也会返回int
。
我也试过
tok
即使tok.contains("0,1,2,3,4,5,6,7,8,9");
中有false
,它也会返回int
。我还没有学习tok
类型。但我注意到char
返回了tok.contains("1");
。
我想使用true
结果为boolean
和String
创建单独的处理程序。那么代码到目前为止工作。
现在我的问题是,使用像这样的单一方法是否安全或良好
Integer
,或者我应该定义两个单独的方法lastChar()
和lastInt()
答案 0 :(得分:4)
我想知道String的值是否为整数(如" 1234"),您可以尝试转换String:如果有异常,则String的值不是整数:
synchronized
答案 1 :(得分:0)
Scanner scan = new Scanner("tok');
这应该是单引号或双引号,而不是两者
同样hasNextInt()
定义下一个扫描程序令牌是否为int,当然它会返回false,因为你的输入没有int
tok.contains("1");
这是检查它是否包含字符串“1”而不是数字1
您的方法返回一个String,而不是String和Int。即使输入“1”,也会将其视为字符串
您应该详细了解这些方法及其返回方式
How to check the input is an integer or not JAVA?
您始终可以测试输入并使用NumberFormatException或MismatchInputException
答案 2 :(得分:0)
看看https://docs.oracle.com/javase/tutorial/java/data/index.html 它讨论了Java中数字和字符串之间的差异。如果要返回两种不同的数据类型,肯定需要两种方法。
答案 3 :(得分:0)
andynaz和Huang Chen的回答有点补充
为了防止基于捕获的编程,我们鼓励使用谷歌Guava Library
你在图书馆
Ints.tryParse(String str)如果无法解析str,则返回null
否则从str解析整数
希望这能回答你的问题
答案 4 :(得分:0)
如果你正在练习编程,你可以循环遍历字符串中的字符并通过Character
类
String x = getString();
boolean hasNonDigits = false;
for(char c : x.toCharArray()){
if(!Character.isDigit(c)){
hasNonDigits = true;
break;
}
}
if(hasNonDigits){
// It's not an integer
}
但如果您正在寻找更传统的方法,请使用正则表达式Pattern
Pattern p = Pattern.compile("\\D");
String x = getString();
boolean isInteger = !p.matcher(x).find();