gpt4 book ai didi

java - 有没有办法使用用户输入的字符串作为另一个类的方法调用的一部分

转载 作者:行者123 更新时间:2023-12-02 09:36:54 25 4
gpt4 key购买 nike

从告诉您测量单位的用户输入开始,我希望能够将其转换为用户输入以相同方式给出的最终单位

使用一个简单的Java单位转换器,其使用方式如下:

例如要将 1 英尺转换为 12 英寸:

 UnitConverter.convert(1, UnitConverter.Lengths.FEET, UnitConverter.Lengths.INCHES);

假设我让用户输入 FEET 作为字符串,并输入 INCHES 作为他们想要的输出。如何使用字符串变量调用正确的方法?

我制作了一个 HashMap ,将用户输入连接到正确的单元:

int startUnitNo;
int finalUnitNo;
HashMap<Integer, String> units = new HashMap<Integer, String>();
String startUnit;
String finalUnit;

//populate the units hashmap
units.put(1, "KILOGRAMS");
units.put(2, "POUNDS");
units.put(3, "METERS");
units.put(4, "FEET");
units.put(5, "INCHES");
units.put(6, "CENTIMETERS");
units.put(7, "MILLIMETERS");
units.put(8, "PIECE");

//ask for the units and get the string for it
System.out.println("Units: 1.KG 2.LB 3.M 4.FT 5.IN 6.CM 7.MM 8.PIECE");
startUnitNo = in.nextInt();
in.nextLine();
startUnit = units.get(startUnitNo);

//com.company.UnitConverter converter = new com.company.UnitConverter();

System.out.println("Final Units: 1.KG 2.LB 3.M 4.FT 5.IN 6.CM 7.MM 8.PIECE");
finalUnitNo = in.nextInt();
in.nextLine();
finalUnit = units.get(finalUnitNo);

//if statement to check if units are different, go ahead and convert the measurement
if (!finalUnit.trim().toLowerCase().equals(startUnit) && startUnitNo < 3 && finalUnitNo < 3)
{

//at this point I'm stuck, I have no Idea how to use the startUnit and finalUnit string as part of the converter method
}

最佳答案

这就是我在方法中使用 switch 的含义。您将从用户处收到的String 输入作为参数传递:

public static void main(String[] args) {
convertUnits("feet"); //Pass user input instead
convertUnits("inches");
}


public static void convertUnits(String str)
{
str = str.toUpperCase();
switch (str) {
case "FEET":
System.out.println("Feet was called."); //Put what logic you need done in here
break;
case "INCHES":
System.out.println("Inches was called.");
break;
case "MILLIMETERS":
System.out.println("Millimeters was called.");
break;
//default:
//etc...
}
}

str.toUpperCase() 用于忽略用户输入的大小写敏感性。

每当您需要转换给定的单位时,此方法都可以轻松重用代码。您可以传递用户输入,而不是传递硬编码的String。在 convertUnits 方法中的 print 语句所在的位置插入您需要的任何逻辑或代码,并添加您需要的任何其他 case默认

我不认为 switch 中真的有什么太多,它只取决于您的需要。

编辑:

为了进一步帮助您,如果您希望能够在任何传递的单位之间进行转换,您可以使用两种方法,每个方法中都有一个开关,如下所示:

public static final String FEET = "FROMFEET";
public static final String INCHES = "INCHES";
public static final String MILLIMETERS = "MILLIMETERS";

public static void main(String[] args) {
checkUnits("feet","inches", 2);
checkUnits("inches","feet", 1);
}


public static void checkUnits(String from, String to, int units)
{
from = from.toUpperCase();
switch (from) {
case "FEET":
convertUnits(FEET,to, units);
break;
case "INCHES":
convertUnits(INCHES,to, units);
break;
case "MILLIMETERS":
convertUnits(MILLIMETERS,to, units);
break;
//default:
//etc...
}
}

public static void convertUnits(String from, String to, int units)
{
to = to.toUpperCase();
switch (to) {
case "FEET":
System.out.println("FROM: " + from + " to: " + to + " Units: " + units);
break;
case "INCHES":
System.out.println("FROM: " + from + " to: " + to + " Units: " + units);
break;
case "MILLIMETERS":
System.out.println("FROM: " + from + " to: " + to + " Units: " + units);
break;
//default:
//etc...
}
}

但是,您可以传递需要在转换Units的外部方法中使用的实际值,而不是将我用作示例的public static final String传递给convertUnits单位(如UnitConverter.Lengths.FEET)。您可以调用该库的 Convert 方法,而不是使用 convertUnits 中的 print 语句。这将允许您相当轻松地将任何您想要的单位转换为任何您想要的单位。

它基本上是一个嵌套的 switch 语句,但将其放入两个方法中会干净得多。

关于java - 有没有办法使用用户输入的字符串作为另一个类的方法调用的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57432761/

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