【问题标题】:Scanner with Enum, Java带枚举的扫描仪,Java
【发布时间】:2016-03-16 12:30:36
【问题描述】:

我正在为 uni 做作业,但被困在一行代码中。

public static void setKind(SettlementType type) {
        SettlementType t;
        t = scan.nextLine();
        setKind(t = type);

如您所见,我正在使用扫描仪接收SettlementType,但是,IDE 一直说我需要将SettlementType 更改为String。我是 Java 新手,如果有人知道,我找不到解决方法,您能否指导我完成它?

【问题讨论】:

  • 由于scan.nextLine()返回一个字符串,你不能将它分配给一个枚举。
  • 对我来说这看起来像是 XY 问题。我看到您缺少编程工作原理的基础知识(赋值、递归、方法/函数调用)。请重新表述您的问题,以说明您想要实现的目标。您发布的代码错误超出了简单的答案。

标签: java string enums java.util.scanner value-of


【解决方案1】:

每个enum 都有一个valueOf 方法,可以将String 值转换为enum 对象。

SettlementType t = SettlementType.valueOf(scan.nextLine());

如果enum 没有具有指定名称的常量,则可能会引发IllegalArgumentException 异常。

【讨论】:

  • 谢谢java gure,你帮了很多忙
  • 这到底解决了什么?我不相信@mkirito 仅仅因为您复制粘贴了这一行,您的代码就可以像魅力一样工作。还是这样?
  • @zubergu,为什么你认为这段代码不起作用?
  • @zubergu 你是正确的代码作为一个整体 ddoesent 像一个魅力但是这是需要在给定时间解决的问题,所以我可以开始解决代码中的所有其他问题。基本上我不确定如何让扫描仪与 Enums 一起工作
  • @AndrewTobilko 我并不是说你的代码不起作用——我只是说这不适用于 OPs 代码。事实证明——我是对的,现在我们很快就会看到针对同一问题的后续问题。就是这样。
猜你喜欢
  • 2016-10-27
  • 2020-08-17
  • 1970-01-01
  • 2019-07-27
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
相关资源
最近更新 更多