1

このプログラムは、エラーメッセージを表示します:

割り当てられていない変数 yourName の使用と、割り当てられていない変数 yourIsp の使用。

for ループを取り出すと実行されます。ユーザーに名前と isp を少なくとも 4 回尋ね、文字列操作を使用して姓と名から電子メール アドレスを作成しようとしています。

static void Main(string[] args)
{
    string yourName; string yourIsp;
    Console.WriteLine("Enter your full name:");
      for (int i = 0; i < 4; i++)            
    yourName = Console.ReadLine();

    Console.WriteLine("Enter your ISP:");
      for (int j = 0; j < 4; j++)
    yourIsp = Console.ReadLine();

    char[] separator = {' '};
    string[] yourWords;
    yourWords = yourName.Split(separator);
    string yourFirstName = yourWords[0];
    string yourLastName = yourWords[1];
    string yourEmailAddress = yourFirstName + yourLastName + "@" + yourIsp;
    yourEmailAddress = yourEmailAddress.ToLower();
    Console.WriteLine("Hello {0}, your email address is {1}", yourName, yourEmailAddress);
}   
4

3 に答える 3

0

デフォルト値を指定する必要がyourNameあります。yourIsp

string yourName = "";
string yourIsp = "";

forループが確実に実行されるかどうかはわかりません(ループがそれぞれ 4 回実行されることはわかりますが)


代わりに、ループが次のようになったと想像してください。

int number;

for (int i = 0; i < someList.Count(); i++)
    number = Math.Max(number, i.SomeValueInTheList);

Console.WriteLine("Largest value in list: {0}", number);

リストに要素がない場合、ループは実行されnumberず、初期化されません。


値をリストに格納し、1 つずつ表示します。値を上書きし、最後の入力値以外をすべて失います。

var names = new List<string>();
var isps = new List<string>();

string yourName; string yourIsp;
Console.WriteLine("Enter your full name:");
for (int i = 0; i < 4; i++)
    names.Add(Console.ReadLine());

Console.WriteLine("Enter your ISP:");
for (int j = 0; j < 4; j++)
    isps.Add(Console.ReadLine());

foreach (var sentence in names.Zip(isps, (name, isp) => string.Format("Hello {0}, your email address is {1}", name, string.Concat(name, "@", isp).ToLower())))
    Console.WriteLine(sentence);
于 2014-02-03T01:16:57.333 に答える
0

変更string yourName; string yourIsp;:

string yourName = null;
string yourIsp = null;

問題は、変数に値が割り当てられているかどうかをコンパイラが安全に判断できないことです。値の代入が 4 回行われることはコードから明らかですが、コンパイラがそれを言うことはできません。したがって、変数を明示的に初期化する必要があります。

于 2014-02-03T01:17:30.853 に答える
0

既存の回答はエラーを説明しています。私の投稿は、あなたがやろうとしていたと思われることに対処しています。

for (int i = 0; i < 4; i++) {
    Console.WriteLine("Enter your full name:");
    string yourName =Console.ReadLine();

    Console.WriteLine("Enter your ISP:");
    string yourIsp = Console.ReadLine();

    char[] separator = {' '};
    string[] yourWords;
    yourWords = yourName.Split(separator);
    string yourFirstName = yourWords[0];
    string yourLastName = yourWords[1];
    string yourEmailAddress = yourFirstName + yourLastName + "@" + yourIsp;
    yourEmailAddress = yourEmailAddress.ToLower();
    Console.WriteLine("Hello {0}, your email address is {1}", yourName, yourEmailAddress);
}
于 2014-02-03T01:19:59.280 に答える