检查字符串中的一组字母是否为变量的有效方法?
efficient way to check if a group of letters in a string is a variable?
我正在尝试编写代码来打印音阶。我不能使用列表或数组类型的结构(学校原因)。这是我目前所拥有的:
public class Musicarum {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double buildNum = 0.01;
//**************************************************************************************
int a = 1, bb = 2, b = 3, c = 4, db = 4, d = 5, eb = 6, e = 7, f = 8, gb = 9, ab = 10;
//**************************************************************************************
然后在代码中进一步,一旦你 select 你想去的地方,它应该打印一个比例。现在我在大尺度上:
if(answer.equals("scales")) {
System.out.println("Would you like to see a major or a minor scale?");
String scale = input.nextLine();
scale = scale.toLowerCase();
if(scale.equals("major"));
System.out.println("What Scale would you like to see?");
scale = input.nextLine();
System.out.println("The scale you would like to see is made of the notes: " + scale.charAt(0));
}}
我当前的问题是在我打印比例尺的最后一行中。我想知道是否可以检查字符串 scale
并查看其中的单词是否对应于我预定义的变量。然后我希望能够使用我分配给变量的数值。我试过使用用户键入的第一个字符的 unicode 值,但我不知道如何使用它来匹配我的一个 int 变量。我也研究过设置类似于 python 字典的东西,但我现在完全不知道该怎么做。有帮助吗?尝试在不使用 4000 个嵌套 if 语句和每个量表 157 个变量的情况下执行此操作。
Java 不是动态语言,因此获取用户字符串并将其“翻译”成变量名(尽管可能)是极其繁重的(也是一个非常高级的主题)。
您问题的直接答案是使用 Map 结构(地图是 Java 等同于 python 的字典)。一个简单的例子:
Map<String, Integer> scaleByName = new HashMap<>();
scaleByName.put("a", 1);
scaleByName.put("bb", 2); ...
然后您可以使用 scaleByName.get(someStringComingFromUserInput)
之类的调用来 将字符串键 映射到它的整数值。有很多javadoc告诉你更多如何使用地图。
我正在尝试编写代码来打印音阶。我不能使用列表或数组类型的结构(学校原因)。这是我目前所拥有的:
public class Musicarum {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double buildNum = 0.01;
//**************************************************************************************
int a = 1, bb = 2, b = 3, c = 4, db = 4, d = 5, eb = 6, e = 7, f = 8, gb = 9, ab = 10;
//**************************************************************************************
然后在代码中进一步,一旦你 select 你想去的地方,它应该打印一个比例。现在我在大尺度上:
if(answer.equals("scales")) {
System.out.println("Would you like to see a major or a minor scale?");
String scale = input.nextLine();
scale = scale.toLowerCase();
if(scale.equals("major"));
System.out.println("What Scale would you like to see?");
scale = input.nextLine();
System.out.println("The scale you would like to see is made of the notes: " + scale.charAt(0));
}}
我当前的问题是在我打印比例尺的最后一行中。我想知道是否可以检查字符串 scale
并查看其中的单词是否对应于我预定义的变量。然后我希望能够使用我分配给变量的数值。我试过使用用户键入的第一个字符的 unicode 值,但我不知道如何使用它来匹配我的一个 int 变量。我也研究过设置类似于 python 字典的东西,但我现在完全不知道该怎么做。有帮助吗?尝试在不使用 4000 个嵌套 if 语句和每个量表 157 个变量的情况下执行此操作。
Java 不是动态语言,因此获取用户字符串并将其“翻译”成变量名(尽管可能)是极其繁重的(也是一个非常高级的主题)。
您问题的直接答案是使用 Map 结构(地图是 Java 等同于 python 的字典)。一个简单的例子:
Map<String, Integer> scaleByName = new HashMap<>();
scaleByName.put("a", 1);
scaleByName.put("bb", 2); ...
然后您可以使用 scaleByName.get(someStringComingFromUserInput)
之类的调用来 将字符串键 映射到它的整数值。有很多javadoc告诉你更多如何使用地图。