我需要的是,checkChar(line [i])返回false或char.因此,如果结果不为false,则for循环有效,如果有结果,则会中断并打印出char.
我是c#的新手,所以不知道怎么做.我试过这种方式.
using System.IO;
using System;
class Program
{
static void Main()
{
Console.Write("Write a string: ");
string line = Console.ReadLine();
char result;
if (line != null)
{
for(int i=0; i<=line.Length; i++){
result = checkChar(line[i]);
if(!result.Equals("#"))
break;
}
Console.WriteLine(result);
}
}
static char checkChar(char input){
char[] letters={'f', 'g', 'h'};
char noResult="#";
foreach(char letter in letters){
if(input.Equals(letter))
return letter;
else return noResult;
}
}
}
Run Code Online (Sandbox Code Playgroud)
得到错误:
main.cs(18,31): error CS0165: Use of unassigned local variable `result'
main.cs(24,14): error CS0029: Cannot implicitly convert type `string' to `char'
main.cs(22,17): error CS0161: `Program.checkChar(char)': not all code paths return a value
Compilation failed: 3 error(s), 0 warnings
Run Code Online (Sandbox Code Playgroud)
char noResult="#";
Run Code Online (Sandbox Code Playgroud)
应该
char noResult= '#';
Run Code Online (Sandbox Code Playgroud)
""表示字符串,其中as ''表示char.
该方法不应该如下吗?
static char checkChar(char input){
char[] letters={'f', 'g', 'h'};
char noResult="#";
foreach(char letter in letters){
if(input.Equals(letter))
return letter;
}
return noResult;
}
Run Code Online (Sandbox Code Playgroud)
因此,一旦foreach完成了迭代letters,noResult返回而不是在迭代完成之前?这样,即使char找不到结果,也总是返回结果.