相关疑难解决方法(0)

java如何用负数进行模数计算?

我做模数错了吗?因为在Java -13 % 64中应该评估,-13但我得到51.

java math modulo negative-number

89
推荐指数
5
解决办法
11万
查看次数

如何为Java 6枚举实现values()?

在Java中,您可以按如下方式创建枚举:

public enum Letter {
    A, B, C, D, E, F, G;

    static {
       for(Letter letter : values()) {
          // do something with letter
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

这个问题涉及"values()"方法.具体来说,它是如何实现的?通常,我可以在Eclipse中使用F3或CTRL + Click跳转到Java类的源代码(即使对于String,Character,Integer甚至Enum这样的类).可以查看其他枚举方法的来源(例如,valueOf(String)).

"values()"每次调用时都会创建一个新数组吗?如果我将它分配给局部变量然后修改其中一个元素,会发生什么(显然这不会影响values()返回的值,这意味着每次都会分配一个新数组).

它的代码是原生的吗?或者JVM /编译器是否专门处理它,只有当它无法证明它不会被修改时才从values()返回一个新实例.

java enums

66
推荐指数
1
解决办法
2万
查看次数

Java枚举是否有增量运算符++?

是否可以++为枚举实现运算符?

我使用枚举处理状态机的当前状态,能够使用++运算符会很好.

java enums increment operators

21
推荐指数
1
解决办法
1万
查看次数

Langton蚂蚁算法

Langton蚂蚁的问题很简单.一只蚂蚁走在白板和黑色方块的板上.

  • 在白色方块,向右转90°,翻转方块的颜色,向前移动一个单位
  • 在黑色方块,向左转90°,翻转方块的颜色,向前移动一个单位

当"游戏"开始时,棋盘全是白色的.

我已经实施了模拟但是有一个非常丑陋的步行和转弯解决方案,我需要帮助改进.现在步行如下:

if (dir == "NORTH") {
    // Walk up
} else if (dir == "EAST") {
    // Walk right
} else if (dir == "SOUTH") {
    // Walk down
} else if (dir == "WEST") {
    // Walk left
}           
Run Code Online (Sandbox Code Playgroud)

以及改变方向的功能:

private void turn(String leftOrRight){
    if(dir == "NORTH" && lor == "RIGHT" ){
        dir = "EAST";
    } else if (dir == "NORTH" && leftOrRight == "LEFT" ){
        dir = "WEST";
    } else if (dir == …
Run Code Online (Sandbox Code Playgroud)

java

5
推荐指数
1
解决办法
2953
查看次数

Java获取下一个枚举值或从第一个开始

我有一个Java的枚举如下:

public enum Cars
{
   Sport,
   SUV,
   Coupe
}
Run Code Online (Sandbox Code Playgroud)

我需要获得枚举的下一个值.所以,假设我有一个名为myCurrentCar的变量:

private Cars myCurrentCar = Cars.Sport;
Run Code Online (Sandbox Code Playgroud)

我需要创建一个函数,在调用时将myCurrentCar的值设置为枚举中的下一个值.如果枚举不再有值,我应该将变量设置为枚举的第一个值.我以这种方式开始实施:

public Cars GetNextCar(Cars e)
{
  switch(e)
  {
     case Sport:
       return SUV;
     case SUV:
       return Coupe;
     case Coupe:
       return Sport;
     default:
       throw new IndexOutOfRangeException();
  }
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,但它是一个高维护功能,因为每次我修改枚举列表,我必须重构该功能.有没有办法将枚举分割成一个字符串数组,获取下一个值并将字符串值转换为原始枚举?因此,如果我在数组的末尾,我只需抓住第一个索引

java

4
推荐指数
1
解决办法
3224
查看次数

减少并增加枚举值

我想创建一个名为increaseValue的方法,它的签名如下:

public Size increaseValue(Size s)
Run Code Online (Sandbox Code Playgroud)

我还有以下声明:

protected enum Size {XS, S, M, L, XL}
Run Code Online (Sandbox Code Playgroud)

我需要知道,如何在不使用Switch-Case语句的情况下使方法返回正确的值(即输入为L时的XL ......等)?

谢谢 !

java enums

1
推荐指数
1
解决办法
476
查看次数

标签 统计

java ×6

enums ×3

increment ×1

math ×1

modulo ×1

negative-number ×1

operators ×1