我目前正在做一项作业,只是想要一点帮助。对于我的代码,我必须从值数组中找到最低和最高的值,然后将那些不是最高或最低的值加在一起(例如,1,2,3,4,5—我将添加2+3+4)
所以我认为最好的方法是遍历数组并记录存储最高/最低值的位置。这就是我遇到问题的地方,数组存储在Main方法中,而我还没有找到在另一个方法中访问它的方法。我的代码到目前为止:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Scoring {
class Program {
static void Main(string[] args) {
int[] scores = { 4, 7, 9, 3, 8, 6 };
find_Low();
ExitProgram();
}
static int find_Low() {
int low = int.MaxValue;
int low_index = -1;
foreach (int i in scores) {
if (scores[i] < low) {
low = scores[i];
low_index = i;
}
}
Console.WriteLine(low);
Console.WriteLine(low_index);
return low;
}
static void ExitProgram() {
Console.Write("nnPress any key to exit program: ");
Console.ReadKey();
}//end ExitProgram
}
}
我得到的错误是"名称'scores'在当前上下文中不存在。"任何提示/帮助都会非常感激。
为了尽量保持简单,可以这样修改程序
class Program {
static int[] scores = { 4, 7, 9, 3, 8, 6 };
static void Main(string[] args) { ...}
}
传递数组作为参数:
static int find_Low(int[] scores) {
//your code
}
在MainMethod: static void Main(string[] args) {
int[] scores = { 4, 7, 9, 3, 8, 6 };
find_Low(scores); //pass array
ExitProgram();
}
可以将数组作为参数传递给函数:
using System.IO;
using System.Linq;
using System;
class Program
{
static void Main()
{
int[] scores = { 4, 7, 9, 3, 8, 6 };
Console.WriteLine(resoult(scores));
}
static int resoult(int[] pScores)
{
return pScores.Sum() - pScores.Max() - pScores.Min();
}
}