我正在编写程序,我需要为索引输入一个值,但索引应该是复合的,例如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);
}
}
答案 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
,保存输入字符串数字部分的索引,以及char0Index
和char1Index
,保存0中两个字符的值-25
您可以添加两个字符,也可以使用列的行数和数字字符,或者您需要的任何字符。