我让用户输入一串数字,然后for循环应从字符串中挑出每个数字并将其添加到ArrayList
。我相信有人可以很快帮助我
我的问题如下。当我打印出ArrayList
中的所有值时,它会输出更高的数字,例如1234 = 49 50 51 52
。
我认为正在发生的是它打印出ASCII
值而不是数字本身。任何人都可以找到这种情况发生的地点和原因吗?
我尝试将int
变量barcodeNumberAtI更改为char
,这会产生相同的结果。
对于缺乏评论而道歉,但这只是一个快速的计划
int tempNewDigit;
String barCode, ans;
int barcodeNumberAtI;
ArrayList <Integer> numbers = new ArrayList <Integer>();
public void addNumbers(){
Scanner s = new Scanner(System.in);
do{
System.out.println("Please enter a 12 digit barcode\n");
barCode = s.nextLine();
for(int i = 0; i < barCode.length(); i++){
barcodeNumberAtI = barCode.charAt(i);
System.out.println(barcodeNumberAtI);
numbers.add(barcodeNumberAtI);
}
System.out.print("Would you like to add another? y/n\n");
ans = s.nextLine();
} while (!ans.equals("n"));
}
public void displayNumbers(){
for(int i = 0; i < numbers.size(); i++){
System.out.print(numbers.get(i));
}
}
答案 0 :(得分:2)
发生在这一行:barcodeNumberAtI = barCode.charAt(i);
barCode.charAt(i)
返回char
,使用int
值将其转换为ASCII
。
请改用:
barcodeNumberAtI = Character.digit(barCode.charAt(i), 10);
Character.digit
所做的是将第一个参数从类型char
转换为第二个参数指定的基数中的相应int
。
Here's a link to the documentation