java - 用户输入值未添加到 hashmap
问题描述
我有一个预先输入值的哈希图,并且我正在从用户那里获取更多值。然后这些值按升序排序。但是在此代码中,用户输入的值不会插入到哈希图中。
import java.sql.SQLOutput;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
public class CFG {
public static void main(String[] args) {
sortByValueJava8Stream();
}
private static void sortByValueJava8Stream()
{
Map<String, Integer> unSortedMap = getUnSortedMap();
LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap<>();
unSortedMap.entrySet().stream().sorted(Map.Entry.comparingByValue())
.forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));
System.out.println("Sorted Map : " + sortedMap);
}
public static Map<String, Integer> getUnSortedMap() {
Scanner in = new Scanner(System.in);
HashMap<String, Integer> unsortMap = new HashMap<>();
unsortMap.put("Shiran", 342);
unsortMap.put("Hashini", 448);
unsortMap.put("Chanchala", 398);
unsortMap.put("Priyankara", 399);
unsortMap.put("Mayuri", 350);
unsortMap.put("Sameera", 321);
unsortMap.put("Supun", 299);
unsortMap.put("Supuni", 378);
unsortMap.put("Kavindu", 384);
unsortMap.put("Nadeeka", 440);
System.out.println("Do you want to add more players? ");
System.out.println("if yes pres 1 : ");
Integer c = in.nextInt();
if (c == 1) {
addUser();
} return unsortMap;
}
public static void addUser(){
Scanner in = new Scanner(System.in);
Map<String, Integer> unsortMap = new HashMap<>();
System.out.println("Enter name : ");
String a = in.nextLine();
in.nextLine();
System.out.println("Enter Time : ");
Integer b =in.nextInt();
unsortMap.put(a,b);
}
}
我创建了一个名为 adduser() 的方法,并调用它来添加新值。但数据不会被它输入。我该如何解决这个问题?
解决方案
一种方法是全局声明unsortMap Map,以便它可以在其他方法中使用。问题出在您的addUser
方法上,因为它创建了一个unsortMap
在函数完成后从未使用过的本地。另一种方法是将unsortMap Map 作为参数传递给addUser
方法并放入所需的对。
以下是修改后的工作代码。
class CFG
{
static Map<String, Integer> unsortMap; // global declaration of Map
public static void main(String[] args)
{
sortByValueJava8Stream();
}
private static void sortByValueJava8Stream()
{
Map<String, Integer>unSortedMap = getUnSortedMap();
LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap<>();
unSortedMap.entrySet().stream().sorted(Map.Entry.comparingByValue())
.forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));
System.out.println("Sorted Map : " + sortedMap);
}
public static Map<String, Integer> getUnSortedMap()
{
Scanner in = new Scanner(System.in);
unsortMap = new HashMap<>(); // Initializing the Map
unsortMap.put("Shiran", 342);unsortMap.put("Hashini", 448);
unsortMap.put("Chanchala", 398);unsortMap.put("Priyankara", 399);
unsortMap.put("Mayuri", 350);unsortMap.put("Sameera", 321);
unsortMap.put("Supun", 299);unsortMap.put("Supuni", 378);
unsortMap.put("Kavindu", 384);unsortMap.put("Nadeeka", 440);
System.out.println("Do you want to add more players? ");
System.out.println("if yes pres 1 : ");
Integer c = in.nextInt();
if (c == 1)
addUser();
return unsortMap;
}
public static void addUser()
{
Scanner in = new Scanner(System.in);
System.out.println("Enter name : ");
String a = in.nextLine();
System.out.println("Enter Time : ");
int b = in.nextInt();
unsortMap.put(a,b);
}
}
推荐阅读
- excel - 在excel中打印页面
- javascript - JavaScript 方法 Document.write() 与 document.write() 有什么区别?
- python-3.x - 我的 BestBuy 自动购买代码不起作用……为什么?
- sql-server - 将 SQL Server 数据导入为数字
- firebase - google firebase 身份验证服务器数据库名称
- c++ - 打印模板参数
- python - 使用 QFileSystemModel 或 QAbstractItemModel 在 QTreeView 中显示自定义文件列表
- r - 如何将一组特定的原子向量添加到特定的 df 列?
- postgresql - 如何优化简单的 Postgres 查询?
- r - 在条形上方添加计数