我是新来的,但基本上我需要一些帮助。 我有大学任务,我遇到了一些麻烦。
我正在尝试在C#中创建一个地址簿作为控制台应用程序,我已经构建了我的数组和我的case语句等但是我已经到了一个我不知道如何编辑/添加数据的地步它。
阵列中填充了“XXXXX”,我应该可以更改那些添加名字,姓氏,门牌号码和道路名称,州和邮政编码,第1行是名字,第2行是姓氏我在案例1中编写的代码是这样做还是我做错了?
此外,案例3应该将书籍打印到屏幕上,但是当我在数组中声明它时,它会出现一条错误消息,指出它无法识别s1,s2,s3,s4,s5。这是因为数组与程序的其余部分是分开的吗?
这是我到目前为止所得到的,它可能完全错误,但任何帮助都将非常感激。
非常感谢。
using System;
public static void Main()
{
string s1, s2, s3, s4, s5;
string select;
string input;
char charselect;
char answer;
string[,] a = new string[10, 5]
{
{"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
{"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
{"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
{"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
{"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
{"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
{"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
{"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
{"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"},
{"XXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX"}
};
for (int i = 0; i < a.Length / 5; i++)
{
s1 = a[i, 0];
s2 = a[i, 1];
s3 = a[i, 2];
s4 = a[i, 3];
s5 = a[i, 4];
}
Console.WriteLine("Do You Want to Open The Address Book?");
Console.WriteLine("Type Y or N");
input = Console.ReadLine();
answer = Convert.ToChar(input);
while (answer == 'Y')
{
Console.WriteLine("1. Add Entry");
Console.WriteLine("2. Delete Entry");
Console.WriteLine("3. Print Book to Screen");
select = Console.ReadLine();
{
charselect = Convert.ToChar(select);
char selection = (charselect);
switch (selection)
{
case '1':
string firstname;
{
Console.WriteLine("Please enter the first name of your entry");
firstname = Console.ReadLine();
for (int i = 0; i < a.Length / 10; i++)
{
if (a[i, 0] == "XXXXX")
{
a[i, 0] = "firstname";
}
}
Console.ReadLine();
break;
}
case '2':
{
Console.WriteLine("");
Console.ReadLine();
break;
}
case '3':
{
Console.WriteLine("{0}, {1}, {2}, {3}, {4}", s1, s2, s3, s4, s5);
Console.ReadLine();
break;
}
default:
{
Console.WriteLine("Incorrect selection, please try again");
Console.ReadLine();
break;
}
}
}
}
}
答案 0 :(得分:1)
通常你会创建一个包含地址字段的类:
public class Address
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Street { get; set; }
public string City { get; set; }
public string Zip { get; set; }
}
然后处理此地址类型的数组(或列表)。
var addresses = new Address[10];
addresses[0] = new Address { FirstName = "John", LastName = "Doe", ... };
Console.WriteLine("First name = {0}", addresses[0].FirstName;
为此目的的二维数组对我来说似乎很奇怪。你真的在大学学习这样的东西吗?
答案 1 :(得分:0)
我将您的代码粘贴到我的IDE中,我看到的错误是“使用未分配的本地变量。”
您看到错误,因为您尚未初始化s1,s2,s3,s4&amp; s5以某种方式确保.Net每次都会获得一个值。
for (int i = 0; i < a.Length / 5; i++)
{
s1 = a[i, 0];
s2 = a[i, 1];
s3 = a[i, 2];
s4 = a[i, 3];
s5 = a[i, 4];
}
编译器看到如果a.Length为零,则不会为这些变量赋值。声明变量时,请先尝试将它们初始化为某些内容,如下所示:
string s1 = System.String.Empty;