Home > database >  Trying to fix counting in c#
Trying to fix counting in c#

Time:10-19

So this is a very simple code that i can for the love of me get right because of some small mistake but the point here is the first int the user gives is the amount of numbers you will give after it so i have made this but for some reason the program wants 1 more int than it should. Lets say i enter 3 at first. That should mean that it would take 3 ints after that and then print them and end the program but fore some reason if i enter 3 after that it wants 4. if i enter 4 after that it wants 5 and you get the point. I have tried changing the whole code but i think the problem is that i am just making it to long and to complicated. here is the code

    using System;

namespace Homework_PrPr
{
    class Program
    {
        static void Main(string[] args)
        {
            int ammount = int.Parse(Console.ReadLine());
            int Enters = int.Parse(Console.ReadLine());
            int[] numbers = new int[ammount];
            for(int i = 0; i < ammount; i  )
            {
                numbers[i] = Enters;
                Enters = int.Parse(Console.ReadLine());

            }
            int ammountEntered = 0;
            while(ammountEntered < ammount)
            {
                Console.WriteLine(numbers[ammountEntered]);
                ammountEntered  ;
            }
        }
    }
}

CodePudding user response:

int ammount = int.Parse(Console.ReadLine());
int Enters = int.Parse(Console.ReadLine()); 

Take a moment to think about this. If the user enters amount = 1, what would Happen? You would first ask a number, then enter the loop one time, where it asks for another number. Why is it asking for another number in this case? Why not just skip the Enter variable and assign numbers inside the loop?

for(int i = 0; i < ammount; i  )
{
    numbers[i] = int.Parse(Console.ReadLine());
}

I would highly recommend reading eric lipperts article on How to debug small programs, since problems like this should be very easy to diagnose when stepping thru a program. You might also consider reading the coding convensions guide, local variables should for example use "camelCasing".

You might also consider using a foreach loop when printing variables:

foreach(var number in numbers){
    Console.WriteLine(number);
}

CodePudding user response:

I think i understand your code!

This is how i would do it, and do read my explanation down below aswell!

using System;

namespace Homework_PrPr
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("How many numbers do you want to add to your array?");
            int amount = int.Parse(Console.ReadLine());
            int[] numbers = new int[amount];
            for (int i = 0; i < amount; i  )
            {
                Console.WriteLine($"Numer {i 1}/{amount}"); // Just tells the user what I of number their adding. aka unessecary
                int Enters = int.Parse(Console.ReadLine());
                numbers[i] = Enters;
            }
            Console.WriteLine("\n");

            int ammountEntered = 0;
            while (ammountEntered < amount)
            {
                Console.Write($"Number {ammountEntered   1}/{amount}  :  ");
                Console.WriteLine(numbers[ammountEntered]);
                ammountEntered  ;
            }
        }
    }
}

The first problem was that you asked for a unnesecary ReadLine in the beggining, so that i removed! Then inside you for-loop i switched the position of the adding, aswell as the one asking for a new number. I also added a few counters so that you can see a bit more in detail what the code does!

  • Related