Почему мой код на C # не выводит требуемый результат

#c# #arrays #methods #exponent

#c# #массивы #методы #экспонента

Вопрос:

Я пытаюсь создать программу, использующую несколько методов, которые выводили бы базовые числа, показатели и их результирующие решения. Я пытаюсь запустить его, и он почти завершен, но я сталкиваюсь с парой проблем. Кажется, что сам код выполняется, но, похоже, не выводится на печать в Visual Studio. Я запустил его в онлайн-компиляторе и получил это в качестве вывода:

введите описание изображения здесь

Кажется, я что-то упускаю в своем коде, но мне неясно, чего мне может не хватать. Это код, который я создал для проекта:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Project
{
    class Program
    {
        static void Main(string[] args)
        {
            //Our initialized variables.
            int intMinBase = 1;
            int intMaxBase = 100;

            int intMinExpo = 1;
            int intMaxExpo = 10;

            //Our arrays for the project, all at a length of 5.
            long[] baseNumbers = new long[5];
            long[] exponents = new long[5];
            long[] results = new long[5];

            //Randomize the baseNumbers and exponents!
            Random randInt = new Random();
            for (long i = 0; i < 5; i  )
            {
                baseNumbers[i] = randInt.Next(intMinBase, intMaxBase);
                exponents[i] = randInt.Next(intMinExpo, intMaxExpo);
            }

            PrintArrays(baseNumbers, exponents, results);
        }

        //This is potentially experimental code for the Power Method.
        public static int Power(int baseNum, int exponent)
        {
            int answer;

            if (exponent == 1)
            {
                answer = 1;
            }
            else
            {
                answer = baseNum * Power(baseNum, exponent - 1);
            }

            return answer;
        }


        //The new method to be printed. Is this the correct manner to display this?
        public static void PrintArrays(long[] baseNum, long[] exponent, long[] result)
        {

            Console.WriteLine($"BasetExponenttResult");

            for (int print = 0; print < result.GetUpperBound(0); print  )
            {

                Console.WriteLine(baseNum[print] "t" exponent[print] "t" result[print]);

            }

        }
    }
}
 

Мой вопрос в основном заключается в том, что я что-то упускаю и почему он не отображается для печати в Visual Studio, но появляется в онлайн-компиляторе? Я подозреваю, что ответ на первую часть вопроса связан с методами, которые я использовал, но я не уверен.

Комментарии:

1. Вы никогда не вызываете свою «экспериментальную» Power функцию. Вот почему все результаты равны нулю.

2. » Я запустил его в онлайн-компиляторе и получил это в качестве вывода:» Хорошо, и что не так с этим выводом? Чем он отличается от ожидаемого результата?

3. @DStanley Ах, это имеет смысл. Мы только начали создавать методы, и я не был уверен, что с этим не так.

4. @KarlKnechtel Это связано с тем, что результаты равны нулю.

Ответ №1:

Первая ошибка: нигде не вызывается метод Power и нигде не заполняются результаты массива.

Пример решения:

 for (long i = 0; i < 5; i  )
{
    baseNumbers[i] = randInt.Next(intMinBase, intMaxBase);
    exponents[i] = randInt.Next(intMinExpo, intMaxExpo);
    results[i] = Power(baseNumbers[i], exponents[i]);
}
 

Комментарии:

1. Это определенно происходит, хотя кажется, что программа говорит, что я не могу преобразовать ‘long’ в ‘int’. Я определенно понимаю, что я забыл его вызвать. Я думал, что на этом закончил, но, похоже, это не так. Существует функция convert, но, похоже, она не сработала так, как я надеялся.