我在解决黑客银行的“30天代码”问题8。
这是我写的代码:
import java.util.*;
import java.io.*;
public class Directory
{
public static void main(String args[])throws NoSuchElementException
{
Scanner sc=new Scanner(System.in);
//System.out.println("Enter number");
int n=sc.nextInt();
sc.nextLine();
Map<String,String> Directory= new HashMap<String,String>();
for (int i=0;i<n;i++)
{
//System.out.println("Enter name and phone number");
String name=sc.next();
String ph=sc.next();
sc.nextLine();
Directory.put(name,ph);
}
while(sc.hasNext())
{
String s = sc.next();
sc.nextLine();
String phoneNumber = Directory.get(s);
System.out.println((phoneNumber != null) ? s + "=" + phoneNumber : "Not found");
}
}
}
当我使用自定义输入运行此代码时,我得到如下错误:
线程“main”java中出现异常。util。NoSuchElementException:在java中找不到行。util。扫描仪。下一行(Scanner.java:1585)位于目录下。main(Directory.java:23)
我认为这是由于while循环中的“sc.nextLine()”造成的。但我不知道为什么。我从这里了解到,在使用sc.next()之后,我应该使用sc.nextLine(),以便将控件转移到下一行输入。知道我哪里出错了吗?
从文件中:
public String Next()
查找并返回此扫描仪中的下一个完整令牌。完整令牌的前面和后面都有与分隔符模式匹配的输入
以及扫描仪的文档:
扫描器使用定界符模式将其输入拆分为标记,默认情况下,定界符模式匹配空白
空白包括\n
和\r
。
因此,作为结论,使用nextLine()
来解决换行符
问题在nextInt()
的情况下是有效的,但在使用Next()
的情况下则不是。
我想这对你有用。试试看:)你不需要这一行sc.nextLine()
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("Enter number");
int n=sc.nextInt();
Map<String,String> directory= new HashMap<>();
for (int i=0;i<n;i++)
{
System.out.println("Enter name and phone number");
String name=sc.next();
String ph=sc.next();
sc.nextLine();
directory.put(name,ph);
}
while(sc.hasNext())
{
String s = sc.next();
sc.nextLine();
String phoneNumber = directory.get(s);
System.out.println((phoneNumber != null) ? s + "=" + phoneNumber : "Not found");
}
}
问题内容: 我是Hibernate的新手,并且正在编写一个简单的方法来返回与特定过滤器匹配的对象列表。似乎是自然的回报类型。 不管我做什么,除非聘用了丑陋的人,否则似乎都无法使编译器满意。 我想摆脱它。但是如果我这样做,我会得到警告 (我可以忽略它,但是我不想一开始就得到它),如果我删除泛型以符合返回类型,则会收到警告 我注意到 确实 声明了;但这是完全不同的类型- 返回a 作为原始类型。我发现最
问题内容: 我是Hibernate的新手,并且正在编写一个简单的方法来返回与特定过滤器匹配的对象列表。似乎是自然的回报类型。 不管我做什么,除非雇用了ugly,否则我似乎都无法使编译器满意。 我想摆脱它。但是如果我这样做,我会得到警告 (我可以忽略它,但是我不想一开始就得到它),如果我删除泛型以符合返回类型,则会收到警告 我注意到 确实 声明了;但它是完全不同的类型- 返回a 作为原始类型。我发现
我正在使用kubeadm工具创建kubernetes v1.7集群。 在我的主机上公开服务“echoheaders”非常简单。库贝。com使用外部ip 创建正在运行的部署: 从部署中公开服务: 从web浏览器访问: 现在,我想使用本指南中基于角色的入口控制器公开相同的服务echoheaders:https://github.com/kubernetes/ingress/tree/master/ex
最近,sonatype使maven central支持https(背景信息)。现在,我在pom.xml中添加了以下片段,以强制在任何地方使用https: null 它看起来是不够的,例如,仍然使用了程序集插件HTTP:
问题内容: 即使在使用Java Swing一年以上之后,对我来说,它仍然像魔术一样。如何正确使用BufferStrategy,尤其是方法? 我想添加一个JFrame和一个Canvas,然后进行绘制。我还希望能够调整()画布的大小。每次我调整Canvas的大小时,似乎都会被浪费掉,或者变得毫无用处,因为在上使用并没有真正做任何事情。另外,它具有怪异的不确定性行为,我不知道如何正确同步它。 这就是我的
问题内容: 我想在Linux上使用该机制。我希望我的应用程序知道何时更改了文件。能否请您提供给我一个示例,该怎么做? 问题答案: 文档(来自具有inotify的Monitor文件系统活动) 在C API 提供了三个系统调用来构建各种文件系统监视器: 在内核中创建子系统的实例,并在成功和失败时返回文件描述符。与其他系统调用一样,如果失败,请检查诊断。 顾名思义,它增加了一块 手表 。每个监视都必须提