2014-02-12 2 views
0

Вот код, над которым я работаю для проекта.
Что я не могу понять - это максимальное значение и как его получить?
Даже если я его изменю, это, похоже, не повлияет на результат счетчика?
Может ли кто-нибудь привести меня в правильном направлении, что делать для этого?
Спасибо!Максимальное значение в VB?

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 
+0

Опишите, что вы пытаетесь выполнить. Каков предполагаемый результат? –

+0

Есть ошибки в коде? Максимальное значение - 22. Разве это не очевидно? – DevelopmentIsMyPassion

+0

код не читает мое максимальное значение .. Я могу изменить его на 10, и он все еще имеет значение 22, это моя точка. Мне нужно, чтобы он читал мой код? это моя проблема .. спасибо – user3228997

ответ

0

Вы объявляете counter на уровне модуля и в качестве частной переменной для вашей итерации. Каждый раз, когда ваш цикл for переходит к следующему шагу, частный counter перезаписывается новым значением. Вы должны переименовать его что-то еще

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

или

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

вы, вероятно, хотите:

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 

Обновление: Это не так много, чтобы сделать с оригинальным кодом, но альтернативный подход

 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 
+0

, начинающий понимать lil sense .. но как мне его подсчитать только то, что я положил в max vaule ?! так что я тускнею как нечто совсем другое ?! – user3228997

+0

Const Max_Value As Double = 10 – user3228997

+0

Не забывайте, что в настоящее время у вас есть индекс на основе нуля, смените свой код на 'For c как Integer = 0 на Max_Value -1' или' For c как Integer = 1 на MaxValue'. Для второй, вы также должны изменить 'Convert.ToChar (c + 97)' to 'Convert.ToChar (c + 97 - 1)' –

0

Создайте отдельную переменную, которая будет использоваться в цикле for. Что происходит, так это то, что вы выполняете цикл с помощью счетчика переменных, а затем увеличиваете его внутри цикла. Это будет всегда цикл 22 раза. Так объявите отдельную переменную и зацикливайте на ней.

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

Я думаю, что вы пытаетесь сделать что-то вроде этого:

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 

В версии кода, он выводит все буквы каждый раз, когда он петель. В моей версии кода он выводит только одну букву каждый раз, когда она зацикливается. Оператор Select Case в основном представляет собой простой способ написания кучи отдельных операторов If.

Однако глупо писать большой Select Case. Лучший способ реализовать цикл - заставить его перебирать какую-то индексированную структуру данных. В этом случае все, что вам нужно, это список букв. Самый простой способ сделать это - просто сохранить все буквы в одной строке, например:

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 
+1

спасибо! ничего себе гораздо проще .. хотите стать нашим учителем ?! lol sheesh! – user3228997

+1

@ user3228997, если это ответит на ваш вопрос, вы должны отметить его как таковой. :) – davidsbro

Смежные вопросы