gpt4 book ai didi

Java:使用 long 和 int 的精度错误

转载 作者:行者123 更新时间:2023-11-29 10:15:04 25 4
gpt4 key购买 nike

(仍然)Java 新手,尝试使用 longint 值。我正在尝试从一个 long 值中减去 1,它一直告诉我可能会丢失错误?

我查看了其他问题,但我看到的所有问题都解决了 float 精度错误,或者人们不知道他们为什么使用 long 而不是 int。在我的例子中,它在我给出的问题中是必需的。

    String bookingRequest = "";
int bookingElements = 4;
String[] bookingDetails = new String[bookingElements];
long seatNo = 0;
for(int x = 1; x <= counter; x++) {
bookingRequest = input.nextLine();
bookingDetails = bookingRequest.split(" ");
seatNo = Long.parseLong(bookingDetails[0]);
seatHolders[seatNo - 1] = bookingDetails[1] + " " + bookingDetails[2] + " " + bookingDetails[3];
}

// A bit of code later
long check = 0;
for (long c = 1; c <= seatChecker; c++) {
check = input.nextLong();
//System.out.println(seatHolders[check - 1]);
seatFinder[c - 1] = seatHolders[check - 1];
}

我知道很可能有更好的方法来编写这段代码,但由于我必须使用 long 数据类型来获取座位号(根据问题),我真的只需要知道为什么它不喜欢从 long 值中减去一个。

错误:

Test.java:22: error: possible loss of precision
seatHolders[seatNo - 1] = bookingDetails[1] + " " + book
ingDetails[2] + " " + bookingDetails[3];
^
required: int
found: long
Test.java:31: error: possible loss of precision
seatFinder[c - 1] = seatHolders[check - 1];
^
required: int
found: long
Test.java:31: error: possible loss of precision
seatFinder[c - 1] = seatHolders[check - 1];
^
required: int
found: long
3 errors

提前致谢! :)

最佳答案

数组索引必须是 int 值,但是当您从 long 中减去时,结果也是 long。您必须将变量从 long 更改为 int,或者将减法结果转换为 int,例如:

for (int c = 0; c < ...; c++) {
check = input.nextLong();
seatFinder[c - 1] = seatHolders[(int)(check - 1)];
}

或者:

for (long c = 0; c < ...; c++) {
check = input.nextLong();
seatFinder[(int)(c - 1)] = seatHolders[(int)(check - 1)];
}

但请注意,当值大于 int 范围时,转换为 int 将导致值被截断。

关于Java:使用 long 和 int 的精度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20165332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com