我是c#的新手,所以要为一些愚蠢的问题做好准备。
我目前的任务是从数组中找到最高/最低分数的分数,如果最高/最低分数出现不止一次(只有多次出现),其中一个可以是加入:
例如。 int []得分= [4,8,6,4,8,5]因此最终加成将是4 + 8 + 6 + 5 = 23.
该任务的另一个条件是不能使用LINQ,以及任何System.Array方法。 (你可以通过我之前提出的问题看到这对我来说有点痛苦,因为我在不到5分钟的时间内用LINQ解决了这个问题。)
所以这就是问题:我有工作代码解决了问题,但是任务需要多个方法/函数,所以如果我只有3个方法(包括main),我就无法收到满分。我一直试图重组该计划,但有各种各样的问题。这是我的代码(我可以更好地解释一下):
using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Scoring {
class Program {
static int highOccurrence = 0;
static int lowOccurrence = 0;
//static int high; <------
//static int low; <------
static void Main(string[] args) {
int[] scores = { 4, 8, 6, 4, 8, 5 };
findScore(scores);
ExitProgram();
}
static int findOccurrence(int[] scores, int low, int high) { //find the number of times a high/low occurs
for (int i = 0; i < scores.Length; i++) {
if (low == scores[i]) {
lowOccurrence++;
//record number of time slow occurs
}
if (high == scores[i]) {
highOccurrence++;
//record number of times high occurs }
}
return highOccurrence;
}
static int findScore(int[] scores) { //calculates score, needs to be restructured
int[] arrofNormal = new int[scores.Length];
//int low = scores[0]; <----This is where the issue is
//int high = scores[0]; <----- ^^^^^
int total = 0;
for (int i = 0; i < scores.Length; i++) {
if (low > scores[i]) {
low = scores[i];
} //record lowest value
if (high < scores[i]) {
high = scores[i];
//record highest value
}
}
for (int x = 0; x < scores.Length; x++) {
if (scores[x] != low && scores[x] != high) {
arrofNormal[x] = scores[x];
//provides the total of the scores (not including the high and the low)
}
total += arrofNormal[x];
}
findOccurrence(scores, low, high);
if (highOccurrence > 1) { //if there is more than 1 high (or 1 low) it is added once into the total
total += high;
if (lowOccurrence > 1) {
total += low;
}
}
Console.WriteLine("Sum = " + total);
return total; //remove not all code paths return.. error
}
static void ExitProgram() {
Console.Write("\n\nPress any key to exit program: ");
Console.ReadKey();
}//end ExitProgram
}
}
我在上面的代码中放置了箭头以显示我的问题所在。如果我试图宣布&#34;高&#34;和&#34;低&#34;作为全局变量,我的最终答案始终是一些数字,如果我将变量声明为&#34;高=分数[0]&#34;等等,我会得到正确的答案。
理想情况下,我想要为计算的每个步骤分别设置方法,所以现在我有方法可以找到特定值在数组中出现的次数。接下来我要做的是找到数组中的最高/最低值,一个方法将进行最终计算,最后一个方法将结果写入控制台窗口。最后两部分(找到高/低和最终计算)目前在查找分数方法中。
非常感谢任何帮助。谢谢。