当前位置: 首页 > 知识库问答 >
问题:

java中参数类型LocalTime,int的运算符

皮承基
2023-03-14

我这里有这个代码:

但我得到了错误信息:

接线员

为什么呢?如何修复代码?

以下是代码的文本形式:

import java.time.LocalTime;

public class Services {
    public static void main(String[] args){
        LocalTime t = LocalTime.now();
        
        if (t >=0 && t<12){
            System.out.println("Good Morning!");
        }
        else if (t>=12 && t<18)
        {
            System.out.println("Good Afternoon!");   
        }
        else{
            System.out.println("Hello Neel ,how may I help you");  

               
        }
    }
}

共有3个答案

养昊天
2023-03-14
    public static void main(String[] args) {
    
    LocalTime t = LocalTime.now();
    int h = t.getHour();
    if (h >= 0 && h < 12) {
        System.out.println("Good Morning!");
    } else if (h >= 12 && h < 20) {
        System.out.println("Good Afternoon!");
    } else {
        System.out.println("Hello Neel ,how may I help you");

    }
}

}这对我有用

凌伟泽
2023-03-14

将您的代码翻译成有效的东西的简单方法是

 LocalTime t = LocalTime.now();
 int h = t.getHour();

然后比较“h”。

对于更复杂的情况,例如,如果你想检查它是否在12:30之前,请查看以下结构

 t.isBefore(LocalTime.of(12, 30))

或者可能

 !LocalTime.of(12, 30).isAfter(t);

(两者在确切时间12:30的决定上有所不同)

严令秋
2023-03-14

你不能使用

首先是。与(秒)相比,结果是

  • 负数(如果较小),
  • 0(如果等于)或
  • 正大于0(如果大于)。

因此,相当于to

对于java。时间API中,还有一些特殊的方法,如isBeforeisAfter,它们使得这种比较更加简单。

此外,您不能将诸如LocalTime之类的高级对象与普通int进行比较。看看

java prettyprint-override">LocalTime.of(12, 0)

和类似的方法。

还有一些特殊的预先创建的常量,例如LocalTime。午夜和本地时间。中午

如果您遵循这两个建议,固定代码可能看起来像:

LocalTime t = LocalTime.now();

if (t.isAfter(LocalTime.MIDNIGHT) && t.isBefore(LocalTime.NOON)) {
  System.out.println("Good Morning!");
} else if (t.isAfter(LocalTime.NOON) && t.isBefore(LocalTime.of(18, 0))) {
  System.out.println("Good Afternoon!");   
} else {
  System.out.println("Hello Neel, how may I help you"); 
}

理想情况下,您还可以引入快速帮助方法,例如

private static boolean isBetween(LocalTime start, LocalTime time, LocalTime end) {
  return time.isAfter(start) && time.isBefore(end);
}

要进一步简化代码,请执行以下操作:

LocalTime t = LocalTime.now();

if (isBetween(LocalTime.MIDNIGHT, t, LocalTime.NOON)) {
  System.out.println("Good Morning!");
} else if (isBetween(LocalTime.NOON, t, LocalTime.of(18, 0))) {
  System.out.println("Good Afternoon!");   
} else {
  System.out.println("Hello Neel, how may I help you"); 
}

 类似资料:
  • 我是新来的处理,我有这个问题。我一直收到下面代码中粗体部分的错误消息。我的语法错了吗?

  • 我的Java代码没有什么问题。我正在使用下面的代码,但Eclipse总是提示相同的消息“参数类型Test1,int的运算符未定义”。但是如果我将代码更改为“System.out.println(test1”“100);”或“System.out.println”(“100 test1”)或“System.out.println(100”“test1);”,没有问题。 有人对此有想法吗?请帮忙。多谢

  • 在我的代码中,我一直得到这样的错误:操作符!=对于参数类型boolean和int是未定义的,我不知道该怎么做来修复它。该错误出现在eclipse内部以及启动时 如有帮助,我们将不胜感激:)谢谢!

  • int是byte、short、int、long的默认文字,然后是为什么byte c=15被接受而不进行强制转换,但不接受方法参数。 提前谢谢你。

  • 下面的方法中不断出现错误“The operator-is undefined for The argument type double[],double”,我不知道为什么或如何修复它。 特别是在以下行:“如果((targetX-x)

  • 我试图访问使用一维数组映射定义的二维矩阵的值,并希望将该特定索引值存储在一个变量中。 该矩阵包含整数值,利用二维矩阵到一维数组映射的概念,得到“二元运算符操作数类型错误+第一类INT[]和第二类INT”的错误。 我试图访问矩阵fill中的诊断值,即fill[i-1][j-1],并希望将其存储在变量D seq_2中。length是矩阵中列的大小。 代码是