gpt4 book ai didi

java - 将 Short.MAX_VALUE 递增(溢出)为零,而不是 Short.MIN_VALUE

转载 作者:行者123 更新时间:2023-12-01 08:52:31 25 4
gpt4 key购买 nike

我正在解决一个应用程序中的“tabindex”缺陷,该缺陷在 FirefoxChrome 中运行良好,但在 Internet Explorer 中运行不佳。“tabindex”是通过 JSP 通过静态“int”设置的,每次使用时都会递增。

private static short tabIndex = 1;

sb.append("<select tabindex='").append(tabIndex++) ...

Internet Explorermaximum 'tabindex' 32767 (Short.MAX_VALUE)。因此,我可以将 int 更改为 short,但在达到最大值后,它将滴答作响到 Short.MIN_VALUE

Objects with a negative tabIndex are omitted from the tabbing order.

所以我需要它从 Short.MAX_VALUE 进展到零。显然,编写一些代码来执行此操作很简单,但我想知道是否有一些巧妙的速记方法可以将其递增到严格的正数,或者我可以使用的其他数据类型。

最佳答案

您可以通过将该值与 0x7FFF 进行“与”操作来确保 MSB 始终为 0。

short s = 32767;
short s1 = (short)(s & 0x7FFF); // s1 = 32767 (or 0x7FFF)
s++; // s = -32768 (or 0x8000)
short s2 = (short)(s & 0x7FFF); // s2 = 0

您可能希望将增量和位掩码提取到其自己的方法中,然后在 append 中使用它。

我不会宽恕这段代码,因为它不是很清楚,坦率地说,我不会使用从分配返回的内容,但以下将是一个非常简短的版本:

public short incIndex() {
return tabIndex = (short)(tabIndex+1 & 0x7FFF);
}

...追加(incIndex())...

关于java - 将 Short.MAX_VALUE 递增(溢出)为零,而不是 Short.MIN_VALUE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42295624/

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