Hackerrank 30 Days of Code - Day 8 & C# - Runtime Error



我将在C#参与为期30天的代码编写。我是8日(字典和地图(。我运行我的代码,测试用例0、测试用例2、测试用例3、测试用例4成功,但测试用例1不成功。Hackerrank向我展示了错误;运行时错误";。我不理解这个错误。非常感谢。

挑战:黑客第8天词典和地图

有人能理解为什么我的Python Hackerrank 30天挑战练习代码没有通过测试用例1吗?

这是一个挑战:

目标今天,我们学习使用Map或Dictionary数据结构的键值对映射。查看教程选项卡以获取学习材料和教学视频!

任务给定姓名和电话号码,组装一本电话簿,将朋友的姓名映射到他们各自的电话号码。然后,你会得到一个未知数量的名字来查询你的电话簿。对于每个查询,将电话簿中的相关条目打印在新的行上,格式为name=phoneNumber;如果找不到的条目,请改为打印"未找到"。

注意:您的电话簿应该是Dictionary/Map/HashMap数据结构。

输入格式

第一行包含一个整数,表示电话簿中的条目数。随后的每一行都以单行上空格分隔值的形式描述一个条目。第一个值是朋友的名字,第二个值是一个-位的电话号码。

在电话簿条目行之后,还有未知数量的查询行。每一行(查询(都包含一个要查找的行,您必须继续读取行,直到没有更多输入为止。

注:姓名由小写英文字母组成,仅为名字。

输出格式

如果姓名在电话簿中没有相应的条目,则在每个查询的新行上打印"未找到";否则,请打印完整的,格式为name=phoneNumber。

这是我的代码:

using System;
using System.Collections.Generic;
using System.IO;
class Solution
{
static void Main(String[] args)
{
var n = int.Parse(Console.ReadLine());
var phoneBook = new Dictionary<string, int>();
for (var i = 0; i < n; i++)
{
var entry = Console.ReadLine().Split(' ');
var name = entry[0];
var phone = int.Parse(entry[1]);
phoneBook.Add(name, phone);
}
for (var i = 0; i < n; i++)
{
var name = Console.ReadLine();
if (phoneBook.ContainsKey(name))
{
var phone = phoneBook[name];
Console.WriteLine($"{name}={phone}");
}
else Console.WriteLine("Not found");
}
}
}

输入(标准输入(

100000
unayklejwm 53561825
ahiff 57272140
frlrecdfxo 28001354
aeccxyrbek 21112785
mlgdk 12405837
iyiyycfngr 23841264
subnwvrqdp 77688226
vhypdqfbdy 67846211
lcnbh 86026675
lxbjpmuhis 85475547
enfifbprov 20172436
hnjctgslxf 18125412
slfoglbvah 47530087
mpsrcmrkon 44365224
jnpslqvlkx 88071512
liwyjbsfkk 50646067
kyrkhaikuf 18535535
ubvfx 43551151
krger 80787433{-truncated-}

预期输出

Not found
ipwpabdefa=14170412
Not found
toykmviqbo=11872347
mooetebtqt=70658483
fbubawkkhq=10613664
Not found
ejqxn=77321147
Not found
Not found
Not found
Not found
xgfpx=58118174
Not found
odacddldrk=73267266
Not found
iakxugylkc=41875647
Not found
djtelththc=20278224
Not found{-truncated-}

结论

Runtime Error :/

我应该如何修复我的代码?

欢迎提出任何建议。

问题清楚地表明"存在未知数量的查询行";。然而,您正在循环到n,而不是读取到文件的末尾。

如果你能看到代码的输出(out and err(,在你的主方法中添加一个try-catch块,看看错误是什么

我完成了这些任务。

这是我的代码:

static void Main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution */
int n = Int32.Parse(Console.ReadLine());
Dictionary <string, string> phonebook = new Dictionary <string, string>();

for (int i=0; i<n; i++){
string[] line = Console.ReadLine().Split(' ');
phonebook[line[0]] = line[1];
}

string name;
while ((name = Console.ReadLine()) != null){
if (phonebook.ContainsKey(name))
Console.WriteLine(name + "=" + phonebook[name]);
else
Console.WriteLine("Not found");
}
}

最新更新