有人可以给我一些关于我的代码的见解。我的C#程序假设从客户端向服务器发送消息,但只提取和打印元音。但它说明了我的“我”。不存在请帮助。
// 5. Display the received message:
Console.WriteLine("[Server] Message of client recieved");
for (int i = 0; i < totalBytes; i++)
{
aChar = Convert.ToChar(incomingDataBuffer[i]);
Console.Write(aChar);
}
{
aChar = Convert.ToChar(incomingDataBuffer[i]);
if(aChar == 'a' || aChar == 'A' || aChar == 'e' || aChar == 'E' || aChar == 'i' || aChar == 'I' || aChar == 'o' || aChar == 'O' || aChar == 'u' || aChar == 'U')
{
Console.Write(aChar);
}
}
答案 0 :(得分:1)
你用第一个关闭了for循环}。 &#39; i&#39;的范围仅限于{...}正文,因此较低的Convert.ToChar不在&#39; i&#39;范围内,它不再存在。
for (int i = 0; i < totalBytes; i++)
{
aChar = Convert.ToChar(incomingDataBuffer[i]);
Console.Write(aChar);
aChar = Convert.ToChar(incomingDataBuffer[i]);
if(aChar == 'a' || aChar == 'A' || aChar == 'e' || aChar == 'E' || aChar == 'i' || aChar == 'I' || aChar == 'o' || aChar == 'O' || aChar == 'u' || aChar == 'U')
{
Console.Write(aChar);
}
}
会修复它,或者你可以创建两个for循环来使输出成为你想要的输出。
答案 1 :(得分:0)
你只能在for循环中使用“i”,因为它是局部变量。
答案 2 :(得分:0)
好像你打算在for循环中包含你的代码的第二部分,所以只需要确保结束大括号在第二部分之后。
但是你可以用更简单的方式编写代码
var s = Encoding.ASCII.GetString(incomingDataBuffer);
Console.WriteLine(s);
Console.WriteLine(string.Join("",s.Where(c => "aeiou".Contains(char.ToLower(c)))));