gpt4 book ai didi

java - 返回基于 String 的 switch capable 值

转载 作者:行者123 更新时间:2023-11-29 07:59:22 24 4
gpt4 key购买 nike

不确定我将如何攻击它。

基本上我所拥有的是一次或多次不同长度的输入,这将导致一个 Action 。它来自键入的输入、文件等。

我不知道用什么以及如何解决这个问题。最好有一个函数返回一个 int 对应于一个 public static final int FOO = 1;,一个 enum,另一个怎么办?

我现在拥有的是一系列 if 语句,如下所示:

if (str.equals("foo") || str.equals("F")) {
blah;
} else if (str.equals("beach")) {
more blah;
}

这样好吗,还是有更好的方法?已经看过 enum 但似乎比它更重要,例如C. 这可能是错误的,但它会朝着这个方向发展吗?

class Mother
{

HappyCamping() {
switch (ValInput(str)) {
case FOO: do fo; break;
case BAR: do bar; break;
case BAZ: do fo bar: break
...
}

private enum ValInput(String str)
{
FOO("foo"), BAR("bar"), BAZ("baz");

private int value;

private ValInput(String str) {
if (str.equals("blah"))
this.value = 1;
...
}
}
}

要点是采用更简洁的方法并将“解析”与主例程分开。这里有什么好方法?

最佳答案

一种方法是编写一个返回标记的解析器。 token 可以由整数或枚举表示。这会以您建议的方式模块化您的代码。

另一种方法是使用枚举。

public enum Token {

FOO("foo", "f"),
BAR("bar", "b");

private String keyword;
private String abbreviation;

private Token(String keyword, String abbreviation) {
this.keyword = keyword;
this.abbreviation = abbreviation;
}

public String getKeyword() {
return this.keyword;
}
public String getAbbreviation() {
return this.abbreviation;
}

public static Token valueOf(String s) {
for (Token token : values()) {
if (token.getKeyword().equals(s) || token.getAbbreviation().equals(s)) {
return token;
}
}
throw new IllegalArgumentException("No such keyword: " + s);
}
}

然后你可以这样做:

switch (Token.valueOf(inputString)) {
case BAR : doBarStuff(); return;
case FOO : doFooStuff(); return;
}

关于java - 返回基于 String 的 switch capable 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15440080/

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