這是一個非常愚蠢的練習
給定一個包含 n 個整數的陣列,從該陣列中洗掉第一個最大元素和最后一個最小元素。
誰能幫我理解哪里出了問題?這是我第一次用VB寫。
Imports System
Public Module Program
Public Sub Main(args() As string)
Dim numbers = New Integer() {1, 2, 4, 8, 5, 4, 9, 63, 2, 7, 0, 5, 4, 2}
Console.WriteLine("Initial Array {0}" target)
Dim targetSize As Integer = numbers.Length - 2
Dim target(targetSize) As Integer
Dim max = numbers(0)
Dim maxIndex = 0
Dim min = numbers(0)
Dim minIndex = 0
For index = 0 To numbers.Length
If max < numbers(index) Then
maxIndex = index
Stop
End If
Exit For
For index = 0 To numbers.Length
If min > numbers(index) Then
minIndex = index
End If
Exit For
Dim targetIndex As Integer = 0
For index = 0 To numbers.Length
If (index <> minIndex Or index <> maxIndex) Then
target(targetIndex) = numbers(index)
targetIndex = targetIndex 1
End If
Exit For
Console.WriteLine("Target Array {0}" target)
End Sub
End Module
這就是輸出。
Visual Basic.Net Compiler version 0.0.0.5943 (Mono 4.0.1 - tarball)
Copyright (C) 2004-2010 Rolf Bjarne Kvinge. All rights reserved.
/runtime/vb/3yn8kpgq9_3ynmpk553/HelloWorld.vb (40,9) : error VBNC30084: CHANGEME
/runtime/vb/3yn8kpgq9_3ynmpk553/HelloWorld.vb (40,9) : error VBNC30084: CHANGEME
/runtime/vb/3yn8kpgq9_3ynmpk553/HelloWorld.vb (40,9) : error VBNC30084: CHANGEME
There were 3 errors and 0 warnings.
Compilation took 00:00:00.4196520
Error: Command failed: timeout 7 vbnc HelloWorld.vb
在線編輯器
uj5u.com熱心網友回復:
您的代碼存在幾個問題,例如:
target未宣告- for回圈沒有
Next Stop應該是一個Exit For- 邏輯被打破,你想要最小值和最大值,但你沒有檢查所有
- 陣列是固定大小的,你不能洗掉專案,使用
List(Of T)
您可以將所有內容簡化為:
Dim numbers As Int32() = {1, 2, 4, 8, 5, 4, 9, 63, 2, 7, 0, 5, 4, 2}
Dim min As Int32 = numbers.Min()
Dim max As Int32 = numbers.Max()
Dim numberList As List(Of Int32) = numbers.ToList()
Dim indexOfFirstMax As Int32 = numberList.IndexOf(max)
numberList.RemoveAt(indexOfFirstMax)
Dim indexOfLastMin As Int32 = numberList.LastIndexOf(min)
numberList.RemoveAt(indexOfLastMin)
numbers = numberList.ToArray()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/536790.html
標籤:。网网络
