[vb.net] Kijken of een array alfabetisch is

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Clyde Barrow
  • Registratie: Oktober 2006
  • Laatst online: 20-03-2022
Ik zit met een probleempje waar ik niet uit kom...

Er worden een aantal woorden ingelezen in een array via een inputbox. De woorden worden in de array bewaard. Dit werkt (zie onder):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Class FrmAlfabetisch
    Private woorden() As String
    Private aantal As Integer


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim teller As Integer
        Dim woord As String

        aantal = InputBox("Hoeveel woorden wil je ingeven?", "aantal", vbOK)
        ReDim woorden(aantal - 1)

        For teller = 0 To aantal - 1
            woord = InputBox("Geef een woord in: ", "Woord ingeven", vbOK)
            woorden(teller) = woord
        Next
    End Sub



maar nu komt het probleem: Door op 'button2' te klikken wordt nagegaan of de woorden alfabetisch ingegeven werden. Het programma geeft echter ALTIJD alfabetisch terug, ook als de woorden NIET alfabetisch werden ingegeven.

Ziet iemand hoe dit kan komen?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim teller As Short
        Dim aantal2 As Integer
        Dim woorden2(aantal - 1) As String

        aantal = aantal - 1  
        aantal2 = aantal  

        For teller = 0 To aantal
            woorden2(teller) = woorden(teller)
        Next


        Do While aantal > 0  
            aantal2 = aantal2 - 1  

            If woorden(aantal) > woorden(aantal2) Then 'woorden(2) < woorden(1)
                Label1.Text = "niet alfabetisch"
            End If
            aantal = aantal - 1
        Loop
        Label1.Text = "Alfabetisch"
    End Sub
End Class

[ Voor 41% gewijzigd door Clyde Barrow op 21-08-2007 00:43 ]


Acties:
  • 0 Henk 'm!

  • de-cvd
  • Registratie: Februari 2004
  • Laatst online: 18-06 09:54
Op regel 22 (na de loop, deze regel wordt nu dus altijd na de loop uitgevoerd) geef je label1 de waarde dat de array gesorteerd is.

Trouwens ook wel een ranzige manier om een array te kopiëren.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:47

gorgi_19

Kruimeltjes zijn weer op :9

Als je deze constructie wilt gebruiken zal je iets van een Exit Sub ergens tussen moeten frotten. :)
Waarom gebruik je alleen geen textarea, waarin je split op Environment.Newline of spaties? Waarom maak je gebruik van een Array en geen ArrayList / List(Of String)?

Waarom maak je bovendien het geheel niet duidelijker door de CompareTo method te gebruiken?
In pseudocode krijg je iets als:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
For I as integer = 1 to arrItems.Count - 1

    If arrItems(I).CompareTo(arrItems(I-1)) < 0 Then

         labelText.Text = "Niet alfabetisch"
         Exit Sub

    End if

Next

[ Voor 85% gewijzigd door gorgi_19 op 21-08-2007 08:29 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:48
Heb je zelf al eens je code gedebugged ?
Het is nl. niet de bedoeling dat je dit hier anderen laat doen, en zo komt het nu wel over. Plaats eens een breakpoint in je code en stap dmv de debugger eens stap voor stap door je code. Op die manier kan je zien wat / waar het mis gaat.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Clyde Barrow
  • Registratie: Oktober 2006
  • Laatst online: 20-03-2022
Bedankt, ik heb het opgelost!

@Gori: ik ben nog maar een noob. Dit was een oefening om met arrays te leren werken.