user3228997
user3228997

Reputation: 1

Max Value in VB?

Here is the code I'm working on for a project.
What I can't figure out is the max value and how to get it?
Even if I change it, it seems not to affect the outcome of the counter?
Can anyone lead me in the right direction on what to do for this?
Thanks!

Module 
Module1 
Dim counter As Integer 
Const Max_Value As Double = 22 

 Sub Main() 
 Console.WriteLine("Are you ready to see which letter is 22? Press Enter") 
 Console.ReadLine() 
 For counter As Integer = 0 To Max_Value Step 1 
  
Console.Write("a") 
 Console.WriteLine("0") 
 counter = counter + 1 
 Console.Write("b") 
 Console.WriteLine("1") 
 counter = counter + 1 
 Console.Write("c") 
 Console.WriteLine("2") 
 counter = counter + 1 
 Console.Write("d") 
 Console.WriteLine("3") 
 counter = counter + 1 
 Console.Write("e") 
 Console.WriteLine("4") 
 counter = counter + 1 
 Console.Write("f") 
 Console.WriteLine("5") 
 counter = counter + 1 
 Console.Write("g") 
 Console.WriteLine("6") 
 counter = counter + 1 
 Console.Write("h") 
 Console.WriteLine("7") 
 counter = counter + 1 
 Console.Write("i") 
 Console.WriteLine("8") 
 counter = counter + 1 
 Console.Write("j") 
 Console.WriteLine("9") 
 counter = counter + 1 
 Console.Write("k") 
 Console.WriteLine("10") 
 counter = counter + 1 
 Console.Write("l") 
 Console.WriteLine("11") 
 counter = counter + 1 
 Console.Write("m") 
 Console.WriteLine("12") 
 counter = counter + 1 
 Console.Write("n") 
 Console.WriteLine("13") 
 counter = counter + 1 
 Console.Write("o") 
 Console.WriteLine("14") 
 counter = counter + 1 
 Console.Write("p") 
 Console.WriteLine("15") 
 counter = counter + 1 
 Console.Write("q") 
 Console.WriteLine("16") 
 counter = counter + 1 
 Console.Write("r") 
 Console.WriteLine("17") 
 counter = counter + 1 
 Console.Write("s") 
 Console.WriteLine("18") 
 counter = counter + 1 
 Console.Write("t") 
 Console.WriteLine("19") 
 counter = counter + 1 
 Console.Write("u") 
 Console.WriteLine("20") 
 counter = counter + 1 
 Console.Write("v") 
 Console.WriteLine("21") 
 counter = counter + 1 
 Console.Write("w") 
 Console.WriteLine("22") 
 Console.ReadLine() 
 Next 
 Console.WriteLine() 
 Console.WriteLine("Summary of the Count: {0} So we've counted to 22{0} The Winning letter is W{0} Which is great because that's the letter of my first name{0} W also stands for War Eagle!", _ 
 Environment.NewLine) 
   
Console.WriteLine("Press Enter to Exit") 
 Console.ReadLine() 
 End Sub 
 End 
 Module 

Upvotes: 0

Views: 200

Answers (3)

Jürgen Steinblock
Jürgen Steinblock

Reputation: 31743

You are declaring counter on Module level and as a private variable for your iteration. Every time your for loop goes to the next step, the private counter is overwritten with a new value. You should rename it something else

For c As Integer = 0 To Max_Value Step 1 
   counter = counter + 1
Next 

or

For c As Integer = 0 To Max_Value Step 1 
   counter = c
Next 

you probably want this:

For c as Integer = 0 To Max_Value ' Step 1 is default so you can skip that

    Console.Write(Convert.ToChar(c + 97)) ' 97 = a
    Console.WriteLine(c) 

Next 

Update: This has not much to do with your original code but is an alternative approach

        Dim maxvalue As Integer = 22
        Dim counter As Integer = 0

        For Each c As Char In "abcdefghijklmnopqrstuvw".ToCharArray()
            counter += 1
            If counter = maxvalue Then

                Dim ordinal As String = "th"
                Select Case counter
                    Case 1 : ordinal = "st"
                    Case 2 : ordinal = "nd"
                    Case 3 : ordinal = "rd"
                End Select

                Console.WriteLine("{0} is the {1}{2} letter in the alphabet", c, maxvalue, ordinal)
                Exit For
            End If
        Next

Upvotes: 0

Steven Doggart
Steven Doggart

Reputation: 43743

I think what you are trying to accomplish is something like this:

Module Module1
    Dim counter As Integer
    Const Max_Value As Integer = 22

    Sub Main()
        Console.WriteLine("Are you ready to see which letter is 22? Press Enter")
        Console.ReadLine()
        For counter As Integer = 0 To Max_Value Step 1
            Select Case counter
                Case 0
                    Console.Write("a")
                Case 1
                    Console.Write("b")
                Case 2
                    Console.Write("c")
                Case 3
                    Console.Write("d")
                Case 4
                    Console.Write("e")
                Case 5
                    Console.Write("f")
                Case 6
                    Console.Write("g")
                Case 7
                    Console.Write("h")
                Case 8
                    Console.Write("i")
                Case 9
                    Console.Write("j")
                Case 10
                    Console.Write("k")
                Case 11
                    Console.Write("l")
                Case 12
                    Console.Write("m")
                Case 13
                    Console.Write("n")
                Case 14
                    Console.Write("o")
                Case 15
                    Console.Write("p")
                Case 16
                    Console.Write("q")
                Case 17
                    Console.Write("r")
                Case 18
                    Console.Write("s")
                Case 19
                    Console.Write("t")
                Case 20
                    Console.Write("u")
                Case 21
                    Console.Write("v")
                Case 22
                    Console.Write("w")
            End Select
            Console.WriteLine(counter)
            Console.ReadLine()
        Next
        Console.WriteLine()
        Console.WriteLine("Summary of the Count: {0} So we've counted to 22{0} The Winning letter is W{0} Which is great because that's the letter of my first name{0} W also stands for War Eagle!", Environment.NewLine)
        Console.WriteLine("Press Enter to Exit")
        Console.ReadLine()
    End Sub
End Module

In your version of the code, it outputs all of the letters each time it loops. In my version of the code, it only outputs one letter each time it loops. The Select Case statement is basically a simpler way of writing a bunch of separate If statements.

However, it's silly to write a big Select Case like that. The best way to implement a loop is to have it iterate over some sort of indexed data-structure. In this case, all you need is a list of letters. The simplest way to do that is to just store all of the letters in a single string, like this:

Dim letters As String = "abcdefghijklmnopqrstuvw"
For counter As Integer = 0 To Max_Value Step 1
    Console.Write(letters(counter))
    Console.WriteLine(counter)
    Console.ReadLine()
Next

Upvotes: 1

DevelopmentIsMyPassion
DevelopmentIsMyPassion

Reputation: 3591

Create seperate variable to be used in for loop. What is happening is that you are looping with variable counter and then incrementing it inside loop. This will always loop 22 times. So declare seperate variable and loop on it.

Dim intC as integer
For intC = 0 to Max_Value step 1
   counter = counter + 1
Next

Upvotes: 0

Related Questions