Java输入/输出混乱

时间:2016-11-17 14:52:51

标签: java parseint

我正在编写程序,我需要为索引输入一个值,但索引应该是复合的,例如44GH。 我的问题是,当我要求用户输入它然后我想显示它时,如何使程序不崩溃?

我一直在网站上寻找答案,但它们只适用于整数或字符串类型。 如果有人可以提供帮助,我们将非常感激。

         Scanner s input = new Scanner(System.in);
    private ArrayList<Product> productList;

    System.out.println("Enter the product");
    String product = s.nextLine();

    System.out.println("Input code for your product e.g F7PP");
    String code = s.nextLine();
}
public void deleteProduct(){
   System.out.println("Enter the code of your product that you want to delete ");
    String removed = input.nextLine();
            if (productList.isEmpty()) {
            System.out.println("There are no products for removing");
       }  else {
    String aString = input.next(); 
    productList.remove(aString);
}
}

4 个答案:

答案 0 :(得分:4)

在转换为整数之前删除所有非数字char:

String numbersOnly= aString.replaceAll("[^0-9]", "");
Integer result = Integer.parseInt(numbersOnly);

答案 1 :(得分:0)

最好的方法是创建一些可以解决此问题的RegEx,并测试您的输入是否与RegExp匹配。这是一个测试RegExp的好网站:Debuggex

然后,当您知道如何提取整数部分时,就可以解析它。

答案 2 :(得分:0)

我认为OP想要打印出一个字符串,但如果我错了,请纠正我。所以,

    Scanner input = new Scanner(System.in);
    String aString = input.nextLine(); // FFR55 or something is expected
    System.out.println(aString);

然后显然你可以使用:

    aString.replaceAll();
    Integer.parseInt();

要修改输出但是从我收集的内容中,输出应该类似于FFR55。

答案 3 :(得分:0)

尝试将代码拆分为两部分:

int numbers = Integer.parseInt(string.replaceAll("[^0-9]", ""));
String chars = string.replaceAll("[0-9]", "").toUpperCase();
int char0Index = ((int) chars.charAt(0)) - 65;
int char1Index = ((int) chars.charAt(1)) - 65;

此代码生成一个变量numbers,保存输入字符串数字部分的索引,以及char0Indexchar1Index,保存0中两个字符的值-25

您可以添加两个字符,也可以使用列的行数和数字字符,或者您需要的任何字符。