我想将输入作为Java中的字符串,并限制用户不要使用try catch输入整数。
listview.setOnScrollListener(new OnScrollListener() {
private int LastVisibleItem;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState)
{}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if(LastVisibleItem<firstVisibleItem){
Log.d("Tag","Scroll down");
}
if(LastVisibleItem>firstVisibleItem){
Log.d("Tag","Scroll up");
}
LastVisibleItem=firstVisibleItem;
}
});
答案 0 :(得分:2)
测试一下是否为int
,如果不是,则抛出异常
a=sc.nextLine();
Integer.valueOf(a); // throws NumberFormatException
// this is number so go to top of loop
continue;
} catch(NumberFormatException b) {
System.out.println("There is NO problem with your input");
// we can use `a` out side the loop
}
答案 1 :(得分:0)
您应检查字符串中是否包含以下数字:
a=sc.nextLine();
if (a.matches(".*\\d+.*")) {
throw new InputMismatchException();
}
答案 2 :(得分:0)
看看这个:
Does java have a int.tryparse that doesn't throw an exception for bad data?
使用该技术尝试解析用户作为int输入的内容。如果转换成功,则表示他们输入了一个整数,并且应该抛出异常,因为您说过不希望他们输入一个整数(我理解这意味着您不希望他们仅输入数字序列)
我没有给您确切的答案/没有为您编写代码,因为您显然正在学习Java,这是一项学术练习。您的大学/学校对教学/评估我的编程能力不感兴趣,他们对您的编程能力不感兴趣,所以对您来说,为您工作对我没有任何价值:)
如果您在执行我的建议时受阻,请修改问题以包含改进的代码,我们会再次提供帮助
作为旁注,我建议您使错误消息更好,而不是“有问题” 没有什么比告诉用户存在问题更令人沮丧的了,但不是问题所在或如何解决。
答案 3 :(得分:-1)
使用正则表达式可以最好地解决此问题,但是由于您的要求是使用try catch,因此您可以使用以下方法
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = null;
System.out.println("\n\nEnter the name");
try {
// try to get Integer if it is number print invalid input(because we
// don't want number)
sc.nextInt();
System.out.println("There is problem with your input");
}
//getting exception means input was not an integer
// if input was not an Integer then try to read that as string and print
// the name
catch (InputMismatchException b) {
a = sc.next();
System.out.println("You name is " + a);
}
}