我的代码有两个问题:
1-我在Main()中使用Console.Writeline获得了奇怪的语法错误,我认为我缺少右大括号'}'
2-我似乎无法在Main()之后找出我的第一个方法。它应该是一个简单的void方法来编写数组的元素,但Visual Studio似乎认为它是错误的类或命名空间。
有人能发现我搞砸了吗?
public static void Main(string[] args)
{
//static array for winning[6], empty for player[6], empty for matching[6]
int [] winning = new int [6] {2, 4, 6, 9, 1, 3};
int [] player = new int [6];
int [] matching = new int [6];
int inValue;
//Input loop
Console.WriteLine("Please enter six lotto numbers, between 1 and 9");
for (int i = 0; i < player.Length; i++)
{
inValue = Console.Read();
if (inValue < 1 || inValue > 9) //Validate for int 1-9
{
Console.WriteLine("Please enter a whole number between 1 and 9");
}
winning[i] = inValue;
}
//Output
Console.WriteLine("The winning numbers were:");
DisplayArray(int[] winning);
Console.WriteLine("Your numbers were:");
DisplayArrayContents(int[] player);
Console.WriteLine("You had " + MatchCount() + " matches.");
Console.WriteLine("Your matching numbers are:")
DisplayArrayContents(int[] matching);
Console.Read();
}
//Empty method to display arrays
static void DisplayArray(params int[] args)
{
for (int i = 0; i < args.Length; i++)
{
Console.Write({0} + "\t", array[i]);
}
Console.Write("\n");
}
编辑:谢谢大家!我忘记在那里重命名一些变量和方法,但主要问题是缺失;和不必要的数据类型作为Main()中的参数。
答案 0 :(得分:3)
清理语法错误有几点:
1 - 显示数组中的值&#34; args&#34; (这是作为参数传递给方法签名中的DisplayArray),更改&#34; array [i]&#34;到&#34; args [i]&#34;。
<util:list id="test" scope="prototype" value-type="CommonInterfaceOfBeans">
<ref bean="bean1ClassName"/>
<ref bean="bean2ClassName"/>
<ref bean="bean3ClassName"/>
<ref bean="bean4ClassName"/>
<ref bean="bean5ClassName"/>
</util:list>
2 - 调用DisplayArray时,您只需要传入要在该方法中操作的数组实例,因此请更改以下调用:
@Service
public class Service {
public void run() {
List<CommonInterfaceOfBeans> handlers= lookUp();
handlers.get(0).doSomething();
}
@Lookup(value = "test")
protected List<CommonInterfaceOfBeans> lookUp() {
return null; //This gets replaced with list by Spring via cglib.
}
为:
static void DisplayArray(params int[] args)
{
for (int i = 0; i < args.Length; i++)
{
Console.Write("{0}\t", args[i]);
}
Console.Write("\n");
}
祝你好运!
<强>更新强>
这是一个工作原型:
DisplayArray(int[] winning);
DisplayArrayContents(int[] player);
答案 1 :(得分:2)
//Empty method to display arrays
static void DisplayArray(params int[] args)
这应该是static void DisplayArray(int[] array)
,因为您无论如何都要在数组中传递,并且不需要varargs的性能损失(这是您在声明参数时所执行的操作)为params int[] args
。
Console.Write({0} + "\t", array[i]);
您不会像这样将格式字符串连接在一起。你可以使用:
Console.Write("{0}\t", array[i]);
此外,array
未在您的实施的DisplayArray()
内定义。您已将参数命名为args
DisplayArrayContents(int[] matching);
您没有DisplayArrayContents
方法,并且您不需要指定您再次传入的内容的类型。编译器可以在调用时保证类型安全,因此您只需按名称传递它,
DisplayArray(matching);
在这里缺少分号:
Console.WriteLine("Your matching numbers are:")
在你的输入循环中,你正在将玩家输入写入winning
数组,这意味着他们最终会总是选择中奖号码,因为他们只是将它们放入。
您可能想要player[i] = inValue;
inValue = Console.Read()
这不做您可能期望的事情。尝试使用以下程序:
var inValue = Console.Read();
Console.WriteLine(inValue);
并在控制台输入1.您将获得与1
不同的输出,因为Console.Read()
返回char
值。
Console.ReadLine()
,Int32.Parse()
和String.Split()
的组合将为您提供所需的信息。
答案 2 :(得分:0)
调用方法时,不应将类型与参数一起传递。例如,DisplayArray(int[] winning);
应该只是DisplayArray(winning);
修复所有这些错误,你应该没问题。