1

VB.NET プログラムで次の 2 つのエラーが表示されます。

  1. マイナスの値や0を入力しても壊れません。
  2. 合計値は表示されません。

誰でもこの問題を解決できますか?

Enter deposit amount: 300
Another (y or n)? y
Enter deposit amount: -1
Amount cannot be zero or negative.

私のコード:

 Module Module1

 Sub Main()
    Dim userResponse As Char
    Dim depositAmount As Decimal
    Dim totalDeposits As Decimal

    Dim depositCount As Integer
    Dim averageDeposit As Decimal
    depositCount = 0
    totalDeposits = 0

    While Not (userResponse = "n")
        Console.WriteLine("Enter Desposit Amount:")
        If (depositAmount < 0 And depositAmount = 0) Then
            Console.WriteLine("Amount cannot be zero or negative.")
        Else
            depositAmount = Console.ReadLine()



            Console.WriteLine("Another (y or n)?")
            userResponse = Console.ReadLine()



            totalDeposits = totalDeposits + depositAmount
            depositCount = depositCount + 1
            averageDeposit = totalDeposits / depositCount

        End If
    End While


    Console.WriteLine("  Total deposits:               " + totalDeposits.ToString)
    Console.WriteLine("  Number of deposits:           " + depositCount.ToString)
    Console.WriteLine("Average deposit:     " + averageDeposit.ToString)

End Sub

End Module
4

2 に答える 2

1

あなたは試すことができるかもしれません: If (depositAmount < 0 or depositAmount = 0) 私が見るところ、値は同時に負とゼロになることはできません。

于 2013-07-11T19:55:44.643 に答える
0

負の値または 0 を入力しても壊れません。合計値は表示されません。

オプションをオンにせずにコーディングし、暗黙的に文字列を Decimal に変換しようとしています。また、ユーザーが入力する前に預金額を確認しています。

このようなことを試してください:

 Module Module1

 Sub Main()
    Dim userResponse As Char
    Dim depositAmount As Double
    Dim totalDeposits As Double

    Dim depositCount As Integer
    Dim averageDeposit As Double
    depositCount = 0
    totalDeposits = 0
While Not (userResponse = "n")
    Console.WriteLine("Enter Desposit Amount:")
    'Attempt to convert readline to double. if it's successful GoodResponse
    'is true and depositamount has the value entered, otherwise it's 0
    Dim GoodResponse As Boolean = Double.TryParse(Console.Readline(), depositAmount)
    If Not GoodResponse OrElse depositAmount <=0 Then
        depositAmount = 0
        Console.WriteLine("Amount must be a number and cannot be zero or negative.")
    End If

        Console.WriteLine("Another (y or n)?")
        userResponse = Console.ReadLine()



        totalDeposits = totalDeposits + depositAmount
        depositCount = depositCount + 1
        averageDeposit = totalDeposits / depositCount

    End If
End While
于 2013-07-11T19:56:10.260 に答える