****我不一定希望代码能解决这个问题,我想如果有人能够向我解释为什么会这样,或者我可以做得更好来解决这个问题。* ***
我有一个家庭作业,我需要打印一个系列的最高和最低数量。我目前能够打印出最高和最低的数字,但如果输入的所有数字都是正数,那么它显示我的最低数字为0,如果所有输入的数字都是负数,则相同。 因此,如果有人能够解释如何解决这个问题,而不必给出答案,那将非常感谢! 这是我的代码:
Module Module1
'This is going to have the user enter a series of numbers,
'Once the user is finished have them enter '-99' to end the series,
'then it is going to return largest and smallest number
Sub Main()
NumSeries()
End Sub
'This is going to get the series from the users
Sub NumSeries()
Dim largeNum As Integer = 0
Dim smallNum As Integer = 0
Dim userNum As Integer = 0
Dim largeTemp As Integer = 0
Dim smallTemp As Integer = 0
Console.WriteLine("Please enter a series of positive and negative numbers")
Console.WriteLine("Then type '-99' to end the series")
Console.WriteLine()
While (userNum <> -99)
Console.Write("Enter num: ")
userNum = Console.ReadLine()
If (userNum > largeTemp) Then
largeTemp = userNum
largeNum = largeTemp
ElseIf (userNum < smallTemp And userNum <> -99) Then
smallTemp = userNum
smallNum = smallTemp
End If
End While
Console.WriteLine("The largest number is " & largeNum)
Console.WriteLine("The smallest number is " & smallNum)
End Sub
End Module
答案 0 :(得分:1)
两点:
您不需要变量largeTemp和smallTemp。
(问题的答案)您应该将largeNum初始化为非常小的数字,将smallNum初始化为非常大的数字。例如,如果在程序开始时将smallNum设置为零,则只有小于零的数字才会替换它。要找到这样的错误,您应该手动或使用调试器跟踪程序,并查看每个步骤发生的情况。现在这样做是个好主意,这样你才能理解这个问题。 (或者,正如Idle-Mind指出的那样,您可以将largeNum和smallNum初始化为列表中的第一项。)
答案 1 :(得分:0)
根本不要使用任何哨兵值。只需声明一个布尔变量,即可知道检索到的值是否是第一个:
Console.WriteLine("Plan: ");
string Plan = Console.ReadLine();
if (Plan.length==0 || ! Plan._______("S") || ! Plan._______("M"))
{
Console.WriteLine("Invalid. Enter only "S" or "M");
}
如果是,则将largeNum和smallNum都设置为该值。现在只需将每个额外输入值与这些存储值进行比较,以查看它们是否大于或小于先前已知的极值。
答案 2 :(得分:0)
您应该改进的一些事项:
您可以删除临时变量。除了不必要地占用内存和CPU时间之外,它们不会用于任何其他目的。
您应该分别使用最高和最低可能值初始化最小和最大变量。如果您认为应允许大于整数值,请将类型更改为Long
Dim largeNum As Integer = Integer.MinValue
Dim smallNum As Integer = Integer.MaxValue
删除ElseIf
。请改用两个If
语句。这样两个变量都将使用第一个输入本身进行设置。
If (userNum > largeNum) Then largeNum = userNum
If (userNum < smallNum) Then smallNum = userNum