Cómo pedir y mostrar datos usando un FOR en Visual Basic .NET

Ingresé un código en 'MS Visual Basic 2010 Express'. Creé un nuevo proyecto, le dí doble clic a la forma y dentro del bucle correspondiente a "Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)andles MyBase.Load" el cual se encuentra a su vez dentro de "Public Class Form1", digité el código, el cual implementa un programita para pedir por pantalla valores de tiempos y almacenarlos en una matriz de 5 por 5 y, luego muestra cada uno de esos valores diciendo a qué posición de la matriz corresponde cada uno. Pero al ejecutar proyecto, solo muestra la forma y no hace mas nada. ¿Me podrías por favor ayudar diciéndome qué es lo que estoy haciendo mal o si hace falta especificar alguna librería (y cuál sería) o algo así?.

El código es:

***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****

Dim costos(,) As Double
Dim valor As String

For i = 0 To 4

For j = 0 To 4
Console.WriteLine("Entre el Costo desde la ciudad " & i & " a la ciudad " & j & ":")
valor = Console.ReadLine()

costos(i, j) = Convert.ToDouble(valor)
Next
Next

For i = 0 To 4
For j = 0 To 4
MsgBox("El Costo desde la ciudad " & i & " a la ciudad " & j & " es: " & costos(i, j).ToString)
Next
Next

***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****

2 respuestas

Respuesta
1

Console. WriteLine y Console. ReadLine() son instrucciones de programas tipo consola, no van a funcionar en programas tipo formularios(win32), en su lugar puedes usar inputbox, y tu código seria

Dim costos(,) As Double
Dim valor As String    
For i = 0 To 4
    For j = 0 To 4<br class="scayt-misspell" data-scayt_word="Console" data-scaytid="210" />valor = InputBox("Entre el Costo desde la ciudad " & i & " a la ciudad " & j & ":")
        costos(i, j) = Convert.ToDouble(valor)
    Next
Next
For i = 0 To 4
    For j = 0 To 4
        MsgBox("El Costo desde la ciudad " & i & " a la ciudad " & j & " es: " & costos(i, j).ToString)        
    Next
Next

Vuelvo a poner el código, aparecieron textos extraños en la respuesta anterior

Dim costos(,) As Double
Dim valor As String
For i = 0 To 4
    For j = 0 To 4
        valor = InputBox("Entre el Costo desde la ciudad " & i & " a la ciudad " & j & ":","Costo")        
        costos(i, j) = Convert.ToDouble(valor)
    Next
Next
For i = 0 To 4
    For j = 0 To 4
        MsgBox("El Costo desde la ciudad " & i & " a la ciudad " & j & " es: " & costos(i, j).ToString)
    Next
Next

Hola. Te cuento que he implementado el código que me especificas, y el programa pide "Entre el Costo desde la ciudad 0 a la ciudad 0:" y al digitársele el valor y darle 'Aceptar' no sigue pidiendo mas valores de costos y nos ubica en la forma (Form1) y no hace más nada - veo que no continúa el ciclo 'For' y espués tampoco inicia la muestra de datos existente en la matriz. Probé colocando las sgtes. tres líneas antes del primer 'For':

valor = InputBox("Entre el Costo A :")
valor = InputBox("Entre el Costo B :")
valor = InputBox("Entre el Costo C :")

Y de esta forma el programa pide cada uno de estos tres costos (A, B y C) y. luego cuando entra al 'For' pide el "costo desde la ciudad 0 a la ciudad 0" y también hasta aquí llega mostrando la forma y no haciendo más nada. Si me pudieras colaborar te agradecería mucho.

Bueno, te cuento que tu consejo de cambiar las líneas " Console.WriteLine("Entre el Costo desde la ciudad " & i & " a la ciudad " & j & ":")" y "valor = Console.ReadLine()" por "valor = InputBox("Entre el Costo desde la ciudad " & i & " a la ciudad " & j & ":")", me resolvió la otra parte del problema.

La otra parte del problema, razón por la cual no me seguía pidiendo datos dentro del 'FOR',

descubrí sin querer queriendo que estaba en la declaración "Dim costos(,)": declaré el arreglo así: "Dim costos(5,5)" especificando que tiene 5 filas y 5 columnas, y esto me resolvió lo faltante.

Gracias.

Respuesta
1

Te seré sincero, con visual basic no mucho, mi fuerte es Visual foxpro, pero estudiando tu programa eh visto que no le has el tamaño a tu matriz Dim valor As String, creo que seria así: Dim valor(5) As String, bueno hoy tu eres el experto y yo el alumno.

Si puedes asígnale valor a cada variable seria mucho que mejor y revisa la instrucción Dim costos(,) As Double no le has asignado valores y solo lleva la coma.

Suerte y hasta pronto.

Bueno, te hago la observación de que 'valor' no es un arreglo - solo es una variable tipo string. Pero tu comentario sobre "Dim costos(,)" me llevó a declarar el arreglo así: "Dim costos(5,5)" especificando que tiene 5 filas y 5 columnas: esto me resolvió parte del problema. Gracias.

Además , como para tu enriquecimiento, te cuento que por consejo de otro experto, las líneas " Console.WriteLine("Entre el Costo desde la ciudad " & i & " a la ciudad " & j & ":")" y
"valor = Console.ReadLine()" las cambié por "valor = InputBox("Entre el Costo desde la ciudad " & i & " a la ciudad " & j & ":")". Y esto me resolvió la otra parte del problema.

Gracias por tus comentarios.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas