我怎样才能 [ 去 ] 使用 switch
How can I [ go to ] using switch
如果用户输入了错误的字符,我该如何编辑这段代码?像“g”或“H”或其他任何东西,再次重复此步骤,并且不要进入下一步[我的意思是]如果我循环 10 个循环,如果我输入错误的字符,它将循环 9 just
char grade; // one grade
int aCount = 0, // number of As
bCount = 0, // number of Bs
cCount = 0, // number of Cs
dCount = 0, // number of Ds
fCount = 0; // number of Fs
for ( int i = 1; i <= 10; i++ )
{
Console.Write( "Enter a letter grade: " );
grade = Char.Parse( Console.ReadLine() );
switch ( grade )
{
case 'A': // grade is uppercase A
case 'a': // or lowercase a
++aCount;
break;
case 'B': // grade is uppercase B
case 'b': // or lowercase b
++bCount;
break;
case 'C': // grade is uppercase C
case 'c': // or lowercase c
++cCount;
break;
case 'D': // grade is uppercase D
case 'd': // or lowercase d
++dCount;
break;
case 'F': // grade is uppercase F
case 'f': // or lowercase f
++fCount;
break;
default: // processes all other characters
Console.WriteLine(
"Incorrect letter grade entered." +
"\nEnter a new grade" );
break;
} // end switch
} // end for
Console.WriteLine(
"\nTotals for each letter grade are:\nA: {0}" +
"\nB: {1}\nC: {2}\nD: {3}\nF: {4}", aCount, bCount,
cCount, dCount, fCount );
之前回答之前没有阅读问题。道歉。检查这个
static void Main(string[] args)
{
char grade; // one grade
int aCount = 0, // number of As
bCount = 0, // number of Bs
cCount = 0, // number of Cs
dCount = 0, // number of Ds
fCount = 0; // number of Fs
AskForChar(ref aCount, ref bCount, ref cCount, ref dCount, ref fCount); // end switch
// end for
Console.WriteLine(
"\nTotals for each letter grade are:\nA: {0}" +
"\nB: {1}\nC: {2}\nD: {3}\nF: {4}", aCount, bCount,
cCount, dCount, fCount);
Console.ReadLine();
}
private static void AskForChar(ref int aCount, ref int bCount, ref int cCount, ref int dCount, ref int fCount)
{
for (int i = 1; i <= 10; i++)
{
char grade;
Console.Write("Enter a letter grade: ");
grade = Char.Parse(Console.ReadLine());
switch (grade)
{
case 'A': // grade is uppercase A
case 'a': // or lowercase a
++aCount;
break;
case 'B': // grade is uppercase B
case 'b': // or lowercase b
++bCount;
break;
case 'C': // grade is uppercase C
case 'c': // or lowercase c
++cCount;
break;
case 'D': // grade is uppercase D
case 'd': // or lowercase d
++dCount;
break;
case 'F': // grade is uppercase F
case 'f': // or lowercase f
++fCount;
break;
default: // processes all other characters
Console.WriteLine(
"Incorrect letter grade entered." +
"\nEnter a new grade");
return;
break;
}
}
}
您可以使它更加动态和更易于阅读。另外,使用词典可以更轻松地添加另一个等级,而无需修改太多代码。
但是,您可以通过跟踪您接受的每个等级的 acceptedGradeCount
并使用它进行比较 运行 循环 10 次来解决您的问题。这就是您应该在代码中执行的操作。
您还可以使用 char.ToLower
将字符转换为小写,这样您就不需要再与大写进行比较了。
//Dictionary of grades with default counts of 0 per grade
var dict = new Dictionary<char, int>()
{
{'a', 0},
{'b', 0},
{'c', 0},
{'d', 0},
{'f', 0},
};
var acceptedGradeCount = 0;
//While accepted grade count is less than 10
while (acceptedGradeCount < 10)
{
Console.WriteLine("Enter a letter grade: ");
//Read in the character and convert it to lower case
var input = char.ToLower(Convert.ToChar(Console.ReadLine()));
//Determine if the character is a valid grade by seeing if it exists in the dictionary
if (dict.ContainsKey(input))
{
//Add 1 to the dictionary count value for that grade
dict[input]++;
acceptedGradeCount++;
}
else
{
Console.WriteLine("Incorrect letter grade entered. {0}Enter a new grade", Environment.NewLine);
}
}
//Get results string
var builder = new StringBuilder("Totals for each letter grade are:");
foreach (KeyValuePair<char, int> keyValuePair in dict)
{
builder.Append(string.Format("{0}: {1} ", keyValuePair.Key, keyValuePair.Value));
}
//Print Results
Console.WriteLine(builder.ToString());
Console.ReadLine();
要保留您当前的代码,您可以添加 acceptedGradeCount
并在每个接受的等级中增加它。也使用 while 循环而不是 for。
char grade; // one grade
int aCount = 0, // number of As
bCount = 0, // number of Bs
cCount = 0, // number of Cs
dCount = 0, // number of Ds
fCount = 0; // number of Fs
var acceptedGradeCount = 0;
while(acceptedGradeCount < 10)
{
Console.Write("Enter a letter grade: ");
grade = char.ToLower(Char.Parse(Console.ReadLine()));
switch (grade)
{
case 'a': // or lowercase a
++aCount;
acceptedGradeCount++;
break;
case 'b': // or lowercase b
++bCount;
acceptedGradeCount++;
break;
case 'c': // or lowercase c
++cCount;
acceptedGradeCount++;
break;
case 'd': // or lowercase d
++dCount;
acceptedGradeCount++;
break;
case 'f': // or lowercase f
++fCount;
acceptedGradeCount++;
break;
default: // processes all other characters
Console.WriteLine(
"Incorrect letter grade entered." +
"\nEnter a new grade");
break;
} // end switch
} // end for
Console.WriteLine(
"\nTotals for each letter grade are:\nA: {0}" +
"\nB: {1}\nC: {2}\nD: {3}\nF: {4}", aCount, bCount,
cCount, dCount, fCount);
如果用户输入了错误的字符,我该如何编辑这段代码?像“g”或“H”或其他任何东西,再次重复此步骤,并且不要进入下一步[我的意思是]如果我循环 10 个循环,如果我输入错误的字符,它将循环 9 just
char grade; // one grade
int aCount = 0, // number of As
bCount = 0, // number of Bs
cCount = 0, // number of Cs
dCount = 0, // number of Ds
fCount = 0; // number of Fs
for ( int i = 1; i <= 10; i++ )
{
Console.Write( "Enter a letter grade: " );
grade = Char.Parse( Console.ReadLine() );
switch ( grade )
{
case 'A': // grade is uppercase A
case 'a': // or lowercase a
++aCount;
break;
case 'B': // grade is uppercase B
case 'b': // or lowercase b
++bCount;
break;
case 'C': // grade is uppercase C
case 'c': // or lowercase c
++cCount;
break;
case 'D': // grade is uppercase D
case 'd': // or lowercase d
++dCount;
break;
case 'F': // grade is uppercase F
case 'f': // or lowercase f
++fCount;
break;
default: // processes all other characters
Console.WriteLine(
"Incorrect letter grade entered." +
"\nEnter a new grade" );
break;
} // end switch
} // end for
Console.WriteLine(
"\nTotals for each letter grade are:\nA: {0}" +
"\nB: {1}\nC: {2}\nD: {3}\nF: {4}", aCount, bCount,
cCount, dCount, fCount );
之前回答之前没有阅读问题。道歉。检查这个
static void Main(string[] args)
{
char grade; // one grade
int aCount = 0, // number of As
bCount = 0, // number of Bs
cCount = 0, // number of Cs
dCount = 0, // number of Ds
fCount = 0; // number of Fs
AskForChar(ref aCount, ref bCount, ref cCount, ref dCount, ref fCount); // end switch
// end for
Console.WriteLine(
"\nTotals for each letter grade are:\nA: {0}" +
"\nB: {1}\nC: {2}\nD: {3}\nF: {4}", aCount, bCount,
cCount, dCount, fCount);
Console.ReadLine();
}
private static void AskForChar(ref int aCount, ref int bCount, ref int cCount, ref int dCount, ref int fCount)
{
for (int i = 1; i <= 10; i++)
{
char grade;
Console.Write("Enter a letter grade: ");
grade = Char.Parse(Console.ReadLine());
switch (grade)
{
case 'A': // grade is uppercase A
case 'a': // or lowercase a
++aCount;
break;
case 'B': // grade is uppercase B
case 'b': // or lowercase b
++bCount;
break;
case 'C': // grade is uppercase C
case 'c': // or lowercase c
++cCount;
break;
case 'D': // grade is uppercase D
case 'd': // or lowercase d
++dCount;
break;
case 'F': // grade is uppercase F
case 'f': // or lowercase f
++fCount;
break;
default: // processes all other characters
Console.WriteLine(
"Incorrect letter grade entered." +
"\nEnter a new grade");
return;
break;
}
}
}
您可以使它更加动态和更易于阅读。另外,使用词典可以更轻松地添加另一个等级,而无需修改太多代码。
但是,您可以通过跟踪您接受的每个等级的 acceptedGradeCount
并使用它进行比较 运行 循环 10 次来解决您的问题。这就是您应该在代码中执行的操作。
您还可以使用 char.ToLower
将字符转换为小写,这样您就不需要再与大写进行比较了。
//Dictionary of grades with default counts of 0 per grade
var dict = new Dictionary<char, int>()
{
{'a', 0},
{'b', 0},
{'c', 0},
{'d', 0},
{'f', 0},
};
var acceptedGradeCount = 0;
//While accepted grade count is less than 10
while (acceptedGradeCount < 10)
{
Console.WriteLine("Enter a letter grade: ");
//Read in the character and convert it to lower case
var input = char.ToLower(Convert.ToChar(Console.ReadLine()));
//Determine if the character is a valid grade by seeing if it exists in the dictionary
if (dict.ContainsKey(input))
{
//Add 1 to the dictionary count value for that grade
dict[input]++;
acceptedGradeCount++;
}
else
{
Console.WriteLine("Incorrect letter grade entered. {0}Enter a new grade", Environment.NewLine);
}
}
//Get results string
var builder = new StringBuilder("Totals for each letter grade are:");
foreach (KeyValuePair<char, int> keyValuePair in dict)
{
builder.Append(string.Format("{0}: {1} ", keyValuePair.Key, keyValuePair.Value));
}
//Print Results
Console.WriteLine(builder.ToString());
Console.ReadLine();
要保留您当前的代码,您可以添加 acceptedGradeCount
并在每个接受的等级中增加它。也使用 while 循环而不是 for。
char grade; // one grade
int aCount = 0, // number of As
bCount = 0, // number of Bs
cCount = 0, // number of Cs
dCount = 0, // number of Ds
fCount = 0; // number of Fs
var acceptedGradeCount = 0;
while(acceptedGradeCount < 10)
{
Console.Write("Enter a letter grade: ");
grade = char.ToLower(Char.Parse(Console.ReadLine()));
switch (grade)
{
case 'a': // or lowercase a
++aCount;
acceptedGradeCount++;
break;
case 'b': // or lowercase b
++bCount;
acceptedGradeCount++;
break;
case 'c': // or lowercase c
++cCount;
acceptedGradeCount++;
break;
case 'd': // or lowercase d
++dCount;
acceptedGradeCount++;
break;
case 'f': // or lowercase f
++fCount;
acceptedGradeCount++;
break;
default: // processes all other characters
Console.WriteLine(
"Incorrect letter grade entered." +
"\nEnter a new grade");
break;
} // end switch
} // end for
Console.WriteLine(
"\nTotals for each letter grade are:\nA: {0}" +
"\nB: {1}\nC: {2}\nD: {3}\nF: {4}", aCount, bCount,
cCount, dCount, fCount);