Как я могу получить десять цифр и отобразить самую большую и самую низкую? - PullRequest
0 голосов
/ 18 апреля 2020

извините, я новичок ie, и я пытаюсь написать программу, которая получает от пользователя десять целых чисел с полем ввода или текстовым полем и отображает самое большое и самое низкое в метке с визуальным основанием c. Я буду признателен, если вы поможете мне с этим. Спасибо. это мое решение. Я не знаю, как сравнить эти десять чисел друг с другом.

Private Sub btnShow_Click(sender As Object, e As EventArgs) Handles btnShow.Click
        Dim i, Container, Max, Numbers
        Max = 0
        i = 1


        While (i <= 10)
            Numbers = InputBox("please enter a number", "Enter a number")
            Max = Numbers
            Container = Container & " " & Numbers
            i = i + 1
        End While
        lblresult.Text = Container
    End Sub

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

концептуально говоря, вы должны использовать List (Of Integer) или List (Of Double), выполнить l oop 10 раз, добавив значение в список.

Предположим, что это наш список

Dim container As New List(Of Integer)

Чтобы получить ввод

Dim userInput = ""
Dim input As Integer

userInput = InputBox("please enter a number", "Enter a number")
If Integer.TryParse(userInput, input) Then
    container.Add(input)
End If

После l oop

Console.WriteLine($"Min: {container.Min()} Max: {container.Max()}")

Имеет ли это для вас смысл?

Редактировать , основанный на запросе Windows Пример форм.

Вы можете сделать следующее вместо InputBox, требуя метки, кнопки и TextBox.

enter image description here

Public Class MainForm
    Private container As New List(Of Integer)

    Private Sub CurrentInputTextBox_KeyPress(sender As Object, e As KeyPressEventArgs) _
        Handles CurrentInputTextBox.KeyPress

        If Asc(e.KeyChar) <> 8 Then
            If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
                e.Handled = True
            End If
        End If
    End Sub

    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
        CurrentLabel.Text = "Enter number 1"
    End Sub
    Private Sub ContinueButton_Click(sender As Object, e As EventArgs) _
        Handles ContinueButton.Click

        If Not String.IsNullOrWhiteSpace(CurrentInputTextBox.Text) Then

            container.Add(CInt(CurrentInputTextBox.Text))
            CurrentLabel.Text = $"Enter number {container.Count + 1}"

            If container.Count = 10 Then
                ContinueButton.Enabled = False
                CurrentLabel.Text =
                    $"Count: {container.Count} " &
                    $"Max: {container.Max()} " &
                    $"Min: {container.Min()}"
            Else
                ActiveControl = CurrentInputTextBox
                CurrentInputTextBox.Text = ""
            End If

        End If
    End Sub
End Class
0 голосов
/ 18 апреля 2020

Я действительно не хотел делать твою домашнюю работу за тебя, но я боялся, что ты, возможно, запутался.

Сначала давайте go над твоим кодом . См. Комментарии

Private Sub btnShow_Click(sender As Object, e As EventArgs) Handles btnShow.Click
    Dim i, Container, Max, Numbers 'Don't declare variables without an As clause
    Max = 0 'Max is an object
    i = 1 'i is and object
    While i <= 10 'the parenthesis are unnecessary. You can't use <= 2 with an object
        Numbers = InputBox("please enter a number", "Enter a number")
        Max = Numbers
        Container = Container & " " & Numbers 'Container is an object; you can't use & with an object
        i = i + 1 'Again with the object i can't use +
    End While
    lblresult.Text = Container
End Sub

Теперь мой подход .

Я создал List(Of T) на уровне Form, чтобы его можно было увидеть из разных процедур. T обозначает тип. Я мог бы быть встроенным типом или типом, который вы создаете, создавая Class.

Событие первого щелчка заполняет список введенными числами. Я использовал .TryParse для проверки правильности введенного значения. Первый параметр - это строка; вход от пользователя. Второй параметр - это переменная для хранения преобразованной строки. .TryParse очень умный. Он возвращает True или False в зависимости от того, может ли входная строка быть преобразована в правильный тип, и заполняет второй параметр преобразованным значением.

Второе событие щелчка проходит по списку, формируя строку для отображения в Label1. Затем мы используем методы, доступные для List(Of T), чтобы получить числа, которые вы хотите.

Private NumbersList As New List(Of Integer)

Private Sub FillNumberList_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim i As Integer
    While i < 10
        Dim input = InputBox("Please enter a whole number")
        Dim inputInt As Integer
        If Integer.TryParse(input, inputInt) Then
            NumbersList.Add(inputInt)
            i += 1 'We only increment i if the parse is succesful
        End If
    End While
    MessageBox.Show("Finished Input")
End Sub

Private Sub DisplayResults_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Label1.Text = "You input these numbers "
    For Each num In NumbersList
        Label1.Text &= $"{num}, "
    Next
    Label2.Text = $"The largest number is {NumbersList.Max}"
    Label3.Text = $"The smallest number is {NumbersList.Min}"
End Sub
...