以下是我从未能完成的课程作业。
我创建一个构造函数并尝试调用该方法。它永远不会奏效。我真的不知道我在这里做错了什么。我要求输入和readline,然后键入我的构造函数,但它不会调用。我怎么称呼这个?
public static int RomToNum(String rom)
{
StringBuilder temp = new StringBuilder();
int ret = 0;
char[] letters = rom.ToArray();
foreach (char item in letters)
{
if (item == 'M')
ret += 1000;
if (item == 'D')
ret += 500;
if (item == 'C')
ret += 100;
if (item == 'L')
ret += 50;
if (item == 'X')
ret += 10;
}
for (int x = 0; x < letters.Length; x++)
{
if (letters[x] == 'I' && !letters.Contains('V'))
{
ret += 1;
}
else
{
if (letters[x] == 'I' && x != letters.Length-1)
{
ret += 4;
break;
}
else if (letters[x] == 'I' && x == letters.Length-1)
{
ret += 6;
break;
}
}
}
return ret;
}
答案 0 :(得分:1)
因为你在另一个类中调用它
你使用
CurrentClass.RomToNum("String Values");
你不需要为类创建一个对象来引用这个方法,因为它是一个静态方法
答案 1 :(得分:0)
老实说,我不知道为什么要用构造函数调用方法而不是Precious1tj发布的方法。但是如果你想使用构造函数来调用方法,你可以这样做:
class Program
{
static void Main(string[] args)
{
Class2 c2 = new Class2("X"); //outputs '10' once it's instantiated
Console.ReadKey();
}
}
class Class2
{
//overloaded ctor
public Class2(string rom)
{
Console.WriteLine(RomToNum(rom));
}
public static int RomToNum(String rom)
{
StringBuilder temp = new StringBuilder();
int ret = 0;
char[] letters = rom.ToArray();
foreach (char item in letters)
{
if (item == 'M')
ret += 1000;
if (item == 'D')
ret += 500;
if (item == 'C')
ret += 100;
if (item == 'L')
ret += 50;
if (item == 'X')
ret += 10;
}
for (int x = 0; x < letters.Length; x++)
{
if (letters[x] == 'I' && !letters.Contains('V'))
{
ret += 1;
}
else
{
if (letters[x] == 'I' && x != letters.Length - 1)
{
ret += 4;
break;
}
else if (letters[x] == 'I' && x == letters.Length - 1)
{
ret += 6;
break;
}
}
}
return ret;
}
}
从构造函数调用方法的缺点是,只要您想要计算新的罗马数字,就必须创建类的新对象。