当前位置: 首页 > 知识库问答 >
问题:

用户输入值不添加到hashmap

谷梁俊楚
2023-03-14

我有一个已经预先输入值的hashmap,并且我正在从用户那里获取更多的值。然后按升序对这些值进行排序。但是在这段代码中,用户输入的值不会插入到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()的方法,我调用它来添加新值。但它不能输入数据。我该怎么解决这个?

共有1个答案

薛飞星
2023-03-14

这样做的一种方法是全局声明unsortMap映射,以便在其他方法中使用它。问题出在addUser方法上,因为它创建了一个本地unsortmap,而在函数完成后,该方法从未使用过。另一种方法是将unsortMap映射作为参数传递给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);
    }
}
 类似资料:
  • 嘿,伙计们,这是我第一次使用MPandroidChart,我目前正在试用它,以充分了解如何使用它及其功能。目前,我正在尝试使用用户输入的数据(通过片段)更新我的折线图。我已经看到了一些关于堆栈溢出的类似问题,但它们似乎都不适合我。 任何帮助都将不胜感激。提前感谢。 注意:有一些重复的代码,因为我正在试验并试图找出不同的方法来寻找解决方案。 获取用户输入的MainFragment MPandroid

  • 我试图在PlayerOne类中放入一个while循环,这样就可以通过用户输入来选择玩家的职业。我不知道怎么让它起作用。你能给我一个建议或提示吗?谢谢!(我想你不需要玩家类或者主类,所以我就让他们置身事外)

  • 我试图构建一个通过扫描仪构建的整数ArrayList。用户必须输入5到10个整数才能使ArrayList有效,但在运行程序时,实际输入数将是未知的。 如何构建程序,使其只在用户输入5、6、7、8、9或10个整数时运行?

  • 问题内容: 如何将字形图标添加到文本类型输入框?例如,我想在用户名输入中包含“ icon-user”, 问题答案: 没有引导程序: 我们将稍后介绍Bootstrap,但这是基本的CSS概念,您可以自己做。正如猎物所指出的那样,您可以通过将CSS绝对放置在输入元素内部的图标来使用CSS。然后在任一侧添加填充,以使文本不会与图标重叠。 因此,对于以下HTML: 您可以使用以下CSS左右对齐字形: De

  • 问题内容: 我正在尝试提供一组可以重复或删除的输入。 我发现并使用了以下方法的组合:https : //jsfiddle.net/69z2wepo/36745/ 并且(因为上面的代码无法处理删除操作):https : //codepen.io/lichin-lin/pen/ MKMezg 我可能不需要指向一个特定的输入,因为在我的界面中,您应该始终只添加一个新的(如果之前的一个已填充)(我将在稍后

  • 我如何添加任何类型的输入字段与一个按钮(添加提示结帐),让客户添加百分比,并单击此按钮,这将激发上面找到的行动。或者,如果我可以在没有按钮的情况下通过Ajax/jQuery进行操作(不刷新页面),那会更好。 如有任何帮助,不胜感激。