我有条形码我正在读取java中的文本文件。我将条形码分成几部分,每一部分都意味着不同的东西。条形码的las 4位数是价格但是当我读取它是一个字符串然后我必须将它转换为int。
// this is the bar code that is in the text file
// 10009999991020162590
File myFile = new File ("data.txt");
Scanner inFile = new Scanner (myFile);
barCode = inFile.nextLine();
departmentStore = (Integer.parseInt(barCode.substring(0,4)));
partNumber = (Integer.parseInt(barCode.substring(4,10)));
date = (Integer.parseInt(barCode.substring(10,16)));
price = (Integer.parseInt(barCode.substring(16,20)));
/*this is the price of the las 4 digits of the bar code as you can
see is a string first but then i have to convert it into a int so i can do math but i want
to put a dot(.) between the 25.90 then transform to int.
*/
答案 0 :(得分:1)
注意,我们在评论中都讨论过,不可能在整数变量中存储一个浮动数字。似乎你想通过在两个数字之间放一个。(点)来将数字存储在一个double中进行计算.Its不是一项艰巨的任务,只需注意代码。
.
.
.
.
String price=barCode.substring(16,20);
//get first two part of string add a . and then the last two char
price=price.substring(0,2)+"."+price.substring(2,4);
//then convert it to double
double p=Double.parseDouble(price);
还有一种简单的方法可以做到这一点。 。
int price = (Integer.parseInt(barCode.substring(16,20)));
double p=price/100.0;
答案 1 :(得分:0)
所以我建议首先将其解析为int值,然后生成小数值。可以在字符串中放入一个十进制字符,但是当它转换为int时,它将生成NumberFormatException或Simply丢弃后十进制值。
因此,将它转换为int然后将值除以100或100.0以获得所需的输出会更好。
答案 2 :(得分:0)
如果您要输入小数,那么它不会是int
您必须将其存储在float
或double
您可以使用简单的字符串连接来完成这项简单的任务。
double price = Double.parseDouble(barCode.substring(16,18) + "." + barCode.substring(18,20));
答案 3 :(得分:0)
选项1(不好):
float price = (Float.parseFloat(
barCode.substring(16,18) + "." + barCode.substring(18,20)));
我不完全确定语言环境。 java会解析独立的语言环境设置吗?例如,在德国,正确的十进制值写为25,90
而不是25.90
。因此,我建议您使用更通用的方法,而不是硬编码的.
。
选项2(更好,imho):
float price = Float.parseFloat(String.format("%02.2f",
(float)(Integer.parseInt(barCode.substring(16,20))) / 100.0f));
答案 4 :(得分:0)
答案实际上取决于您在解析后要对价格变量做什么。
以下是一些选择:
您可以将条形码的最后4位数字视为便士价格:
int priceInPennies = Integer.parseInt(barCode.substring(16,20));
将价格保持在便士价格或将其转换为以美元计价的价格:
double priceInDollars = Double.parseDouble(barCode.substring(16,20)) / 100;
或
double priceInDollars = priceInPennies / 100.0;
如果您只需要显示价格,为什么不将价格保持为字符串:
String priceAsString = barCode.substring(16,18) + "." + barCode.substring(18,20);