将变量声明为数组索引和" 0"?

时间:2014-08-25 06:03:32

标签: c# arrays variables methods scope

我是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;等等,我会得到正确的答案。

理想情况下,我想要为计算的每个步骤分别设置方法,所以现在我有方法可以找到特定值在数组中出现的次数。接下来我要做的是找到数组中的最高/最低值,一个方法将进行最终计算,最后一个方法将结果写入控制台窗口。最后两部分(找到高/低和最终计算)目前在查找分数方法中。

非常感谢任何帮助。谢谢。

0 个答案:

没有答案