2011-12-12 2 views
2

저는 여기 새로 왔지만 기본적으로 도움이 필요합니다. 나는 대학 과제를 가지고 있고 그것에 문제가있다.배열을 사용하여 C#에서 주소록 만들기

나는 콘솔 응용 프로그램으로 C#에서 주소록을 만들려고 노력하고 있으며 내 배열 및 내 사례문 등을 만들었지 만 편집/추가하는 방법을 모르는 시점에 이르렀습니다. 그것에 대한 데이터.

배열에 "XXXXX"이 (가) 채워지고 이름, 성, 집 번호 & 도로 이름, 주 및 우편 번호를 추가 할 수 있도록 변경해야합니다. 행 1이 이름이고 행 2가 성 등 내가 케이스 1에서 작성한 코드는 이것을 할 것인가, 아니면 잘못 했는가?

또한 케이스 3은 책을 화면에 인쇄 할 예정이지만 배열에 선언했을 때 s1, s2, s3, s4, s5를 인식하지 못한다는 오류 메시지가 표시됩니다. 이것은 배열이 프로그램의 나머지 부분과 분리되어 있기 때문입니까?

여기까지 왔습니다. 완전히 잘못 될 수도 있지만 도움이 될 것입니다.

고맙습니다.

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; } 
} 

다음이 주소 유형의 배열 (또는 목록) 작업 :

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; 
        } 
      } 
     } 
    } 
} 
+3

다차원 배열을 사용하여 수행해야합니까 아니면 그렇게 할 것입니까? 나는 적어도 12 가지를 더 잘 생각할 수 있기 때문에 그렇게 할 수있는 방법이 있습니다. C#은 객체 지향 언어이며이 코드 샘플은 OOP에 대한 이점을 활용하거나 존중하지 않습니다. –

+1

어레이 대신 목록 을 사용 해본 적이 있습니까? 목록을 사용하면 항목을 추가하고 제거하는 것이 훨씬 쉬워집니다. –

+0

임무에 대한 요구가 꽤 짜증납니다. 나는 매우 제한된 지식을 가지고 있기 때문에 1 년 밖에되지 않는다. 그래서 나는 왜 그렇게 붙어 있는가 = – Nikosk89

답변

1

보통 당신은 주소 필드를 포함하는 클래스를 만들 것이다.

var addresses = new Address[10]; 
addresses[0] = new Address { FirstName = "John", LastName = "Doe", ... }; 
Console.WriteLine("First name = {0}", addresses[0].FirstName; 

이 목적을위한 2 차원 어레이는 나에게는 매우 이상하게 보입니다. 너 정말 대학에서 그런 것들을 배우고 있니?

0

코드를 내 IDE에 붙여 넣었습니다. 표시되는 오류는 "할당되지 않은 로컬 변수 사용"입니다.

s1, s2, s3, s4 & s5를 초기화하지 않았기 때문에 오류가 표시됩니다. 닷넷은 매번 값이 제공 될 것이라고 확신합니다.

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가 0이면 이러한 변수에 값이 할당되지 않는다고 봅니다. 변수를 선언 할 때 먼저 다음과 같이 변수를 초기화하십시오.

string s1 = System.String.Empty; 
관련 문제