java - 接受用户输入以选择要编辑的变量
问题描述
我正在尝试接受用户输入来选择他们想要编辑的变量。假设我有 10 个变量,我希望用户能够输入“第 1 行”,这会提示他们通过另一个输入来更改该变量的值。我会发布代码,但我没有任何与此相关的内容,因为我什至不知道如何开始。
编辑:我不想有这样的东西:
if (input == "row 1") {
r1 = scan.nextInt();
}
因为我正在处理很多变量,并且不想为一个单一的变量发表声明。
解决方案
在几分钟内完成。只是为了给你看一个模式。
public class TestClass {
private final List<String> list = new ArrayList<>(16);
private final Map<String, RowHolder> holderMap = new HashMap<>(16);
{
list.add("LoL 1");
list.add("LoL 2");
list.add("LoL 3");
list.add("LoL 4");
list.add("LoL 5");
holderMap.put("Row 1", RowHolder.of(v -> { list.set(0, v); }, s -> list.get(0)));
holderMap.put("Row 2", RowHolder.of(v -> { list.set(1, v); }, s -> list.get(1)));
holderMap.put("Row 3", RowHolder.of(v -> { list.set(2, v); }, s -> list.get(2)));
holderMap.put("Row 4", RowHolder.of(v -> { list.set(3, v); }, s -> list.get(3)));
holderMap.put("Row 5", RowHolder.of(v -> { list.set(4, v); }, s -> list.get(4)));
}
public String getRow(final String row) {
return holderMap.get(row).function.apply(row);
}
public void setRow(
final String row,
final String value) {
holderMap.get(row).consumer.accept(value);
}
static class RowHolder {
final Consumer<String> consumer;
final Function<String, String> function;
RowHolder(
final Consumer<String> consumer,
final Function<String, String> function) {
this.consumer = consumer;
this.function = function;
}
static RowHolder of(
final Consumer<String> consumer,
final Function<String, String> function) {
return new RowHolder(consumer, function);
}
}
}
用法基本上是:
final TestClass testClass = new TestClass();
final String rowValue = testClass.getRow("Row 1");
testClass.setRow("Row 1", "LoL LoL");
推荐阅读
- c# - 如何转换列表
数据数组到我可以用于位掩码的东西? - php - 如何在 docker 上同时运行多个项目
- node.js - node_redis(npm redis模块)是否支持redis集群模式或者我们必须使用ioredis?
- matlab - 使用 fplot 函数时如何矢量化?
- r - 将字符串与 for 循环 -R 配对
- json - 使用“JSON”列的 Laravel 5 关系
- javascript - 使用媒体查询的 css 图像交换移动与桌面
- python - 请求 Maya Python 协助:根据文本字段内容连接属性
- apache-flink - 缓冲池在 POJO 类型上被破坏
- r - 在 ggplot2 中使用 scale_color_manual 时顺序错误