使用Java中的输入作为字符串,并限制用户不要输入整数

时间:2018-10-18 05:07:21

标签: java

我想将输入作为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;
               }
            });

4 个答案:

答案 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);
    }
}