Java 控制台中的Hashmap输出

Java 控制台中的Hashmap输出,java,hashmap,println,Java,Hashmap,Println,我正在做一个小“项目”,将一些数据保存在Hashmap中,稍后在控制台中打印出来。 我几乎完成了整个代码,但我在控制台中发布时遇到了问题。。。 到目前为止,我的代码是: import java.util.HashMap; import java.util.Scanner; public class Passwordsaver` { public static void main(String[] args) throws InterruptedException {

我正在做一个小“项目”,将一些数据保存在Hashmap中,稍后在控制台中打印出来。 我几乎完成了整个代码,但我在控制台中发布时遇到了问题。。。 到目前为止,我的代码是:

import java.util.HashMap;
import java.util.Scanner;

public class Passwordsaver` {


        public static void main(String[] args) throws InterruptedException {

            // declare the hashmap
            HashMap<Integer, String> Password = new HashMap<>();
            boolean loopAgain = true;
            Scanner scan = new Scanner(System.in);

            // loop while user not entering no
            do {
                // ask for account (page)
                System.out.print("Enter Page:");
                String page = scan.nextLine();

                // ask for password
                System.out.print("Enter Password");
                String password = scan.nextLine();

                // add the key value pair from user input to the hashmap

                String oldVal = password + page;

                if (oldVal!=null) {
                    System.out.println("The password for the page: " + page + " is "
                            + password + " and will be overwritten if entered again");
                }

                // ask user to check if another entry is required
                System.out.print("Enter another account (y/n)?");
                String answer = scan.nextLine();

                // condition to satisfy in order to loop again
                loopAgain = (answer.equals("y") || answer.equals("Y"));

            } while (loopAgain);
            scan.close();

            System.out.println("\n**********************************");
            System.out.println("The following accounts are in database");
            System.out.println("   account  "+ "      password");       
            for(int page:Password.keySet()){
                System.out.println("   "+ Password +"     "+Password.get(page));
            }
            System.out.println("\n**********************************");
        }

    }
import java.util.HashMap;
导入java.util.Scanner;
公共类密码保护程序`{
公共静态void main(字符串[]args)引发InterruptedException{
//声明hashmap
HashMap Password=newhashmap();
布尔循环=真;
扫描仪扫描=新扫描仪(System.in);
//用户未输入no时循环
做{
//申请帐户(第页)
系统输出打印(“输入页面:”);
String page=scan.nextLine();
//询问密码
系统输出打印(“输入密码”);
字符串密码=scan.nextLine();
//将用户输入中的键值对添加到hashmap
字符串oldVal=密码+页面;
如果(oldVal!=null){
System.out.println(“页面的密码:“+page+”为”
+密码+“并且如果再次输入将被覆盖”);
}
//请用户检查是否需要其他条目
系统输出打印(“输入其他帐户(y/n)?”;
字符串应答=scan.nextLine();
//再次循环所需满足的条件
再次循环=(答案.equals(“y”)|答案.equals(“y”);
}而(再次),;
scan.close();
System.out.println(“\n*******************************************”);
System.out.println(“数据库中有以下帐户”);
System.out.println(“帐户”+“密码”);
for(int页:Password.keySet()){
System.out.println(“+Password+”+Password.get(第页));
}
System.out.println(“\n*******************************************”);
}
}
除了最后一步外,其他一切都正常…我如何打印它? 是否有可能保存数据,以便在以后的某个时间我仍然可以更改地图,而不必一直打开Eclipse


非常感谢

您正在打印完整的HashMap(密码),而不是每个条目的密钥。 请查看以下循环:

 for(int page:Password.keySet()){
                System.out.println("   "+ page +"     "+Password.get(page));
}
在这里,我们打印项的键和值

就性能而言,最好迭代
入口集
,这样就不需要额外的查找成本:

for(Map.Entry<Integer,String> entry:Password.entrySet()){
                    System.out.println("   "+ entry.getKey() +"  " + entry.getValue());
    }
for(Map.Entry:Password.entrySet()){
System.out.println(“+entry.getKey()+”+entry.getValue());
}
编辑

此外,您忘记在hashmap中存储页面/密码组合。添加
密码。放置(页面,密码)
以存储数据


您还必须将HashMap的类型更改为
HashMap

您打印的是完整的HashMap(密码),而不是每个条目的键。 请查看以下循环:

 for(int page:Password.keySet()){
                System.out.println("   "+ page +"     "+Password.get(page));
}
在这里,我们打印项的键和值

就性能而言,最好迭代
入口集
,这样就不需要额外的查找成本:

for(Map.Entry<Integer,String> entry:Password.entrySet()){
                    System.out.println("   "+ entry.getKey() +"  " + entry.getValue());
    }
for(Map.Entry:Password.entrySet()){
System.out.println(“+entry.getKey()+”+entry.getValue());
}
编辑

此外,您忘记在hashmap中存储页面/密码组合。添加
密码。放置(页面,密码)
以存储数据


您还必须将HashMap的类型更改为
HashMap

,以下代码可以工作:

Map<Integer, String> passwords = ...
for (Map.Entry<Integer, String> entry : passwords.entrySet()) {
    //  iterates over every entry in the map, creates a variable called "entry"

    int key = entry.getKey();
    String value = entry.getValue();

    //  now you can print with whatever formatting you want. e.g.:
    System.out.println("account: " + key + ", password: " + password);

}

如果要存储数据,请查看JSONs和Jackson数据绑定库。这是一个用于将Java对象映射到JSON和JSON的库(这不是它的全部功能,只是其中一个功能)。简而言之,您可以将
地图转换为
字符串或从
字符串转换为
,以便将其保存到文件/通过网络发送等。

以下代码可以工作:

Map<Integer, String> passwords = ...
for (Map.Entry<Integer, String> entry : passwords.entrySet()) {
    //  iterates over every entry in the map, creates a variable called "entry"

    int key = entry.getKey();
    String value = entry.getValue();

    //  now you can print with whatever formatting you want. e.g.:
    System.out.println("account: " + key + ", password: " + password);

}

如果要存储数据,请查看JSONs和Jackson数据绑定库。这是一个用于将Java对象映射到JSON和JSON的库(这不是它的全部功能,只是其中一个功能)。简而言之,您可以将
地图
字符串
进行转换,以便将其保存到文件/通过网络发送等。

什么不起作用?你犯了什么错误?您需要提供更多详细信息。当我想在控制台中打印时,地图不会被打印出来。我想把我在控制台中输入的所有页面和密码都放在末尾什么不起作用?你犯了什么错误?您需要提供更多详细信息。当我想在控制台中打印时,地图不会被打印出来。我想把我输入的所有页面和密码都放在我的控制台里。非常感谢你的帮助!我用for(Map.Entry-Entry:Password.entrySet(){System.out.println(“+Entry.getKey()+”+Entry.getValue());}更改了它,但仍然没有打印出来……是否要打印每个循环的所有条目?忘记添加密码。put()将条目添加到密码哈希映射是,我想打印所有条目,但它不会打印一条。非常感谢你的帮助!我用for(Map.Entry-Entry:Password.entrySet(){System.out.println(“+Entry.getKey()+”+Entry.getValue());}更改了它,但仍然没有打印出来……是否要打印每个循环的所有条目?忘记添加密码。put()将条目添加到密码哈希映射是,我想打印所有条目,但它不会打印一个条目。非常感谢您的帮助!!!我现在已将代码更改为以下内容:
for(Map.Entry:Password.entrySet()){int key=