我正在尝试创建控制台应用以了解方法重载。 我有像这样的类库
namespace GetStringName
{
public class GetString
{
public void Player(double num)
{
double number = num * 2;
Console.Write(number);
}
public void Player(string name)
{
char[] charr = name.ToCharArray();
Array.Reverse(charr);
Console.Write(charr);
}
}
}
我的控制台应用程序如下所示
using GetStringName;
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
GetString y = new GetString();
y.Player(Console.ReadLine());
Console.ReadLine();
}
}
}
无论我输入什么(字符串或整数),它总是会恢复字符串。 你能告诉我我做错了什么吗?
答案 0 :(得分:3)
这是因为Console.ReadLine()
方法返回字符串。如果您TryParse
输入了double
,则会调用double
的方法,否则会调用string
的方法。例如:
static void Main(string[] args) {
GetString y = new GetString();
string input = Console.ReadLine();
double doubleInput;
if(double.TryParse(input, out doubleInput)) {
y.Player(doubleInput);
} else {
y.Player(input);
}
}
答案 1 :(得分:0)
无论您输入什么内容,Console.ReadLine()都将始终返回一个字符串。要将输入解析为double,您需要使用double.Parse或double.TryParse。
示例:
double input;
bool success = double.TryParse(Console.ReadLine(), out input);
if(success)
{
y.Player(input);
}
或者
try
{
y.Player(double.Parse(Console.ReadLine()));
}
catch(FormatException)
{
//Input is not a double
}
catch(OverflowException)
{
//Input is out of bounds for a double type
}
TryParse将返回一个bool,指示解析是否成功,而Parse将在输入无效时抛出异常。
一般情况下,我总是喜欢TryParse,除非您特别想让用户知道他们的输入无效的原因。
答案 2 :(得分:-1)
您需要提供double作为方法的参数 试试这个
function findVowels(str) {
return (str.match(/[aeiou]/ig)||[]);
}
findVowels('abracadabra'); // 'aaaaa'