¿Cómo puedo aceptar dos matrices 2D, multiplicarlas y mostrar la respuesta en el formato adecuado?
He escrito un programa para aceptar y imprimir, pero estoy obteniendo errores al aceptar matrices bidimensionales.
error:-
hilo ‘main’ se bloquea en ‘se llamó a Result::unwrap ()
en un valor Err
: ParseIntError { kind: InvalidDigit }’, test1.rs:15:39
nota: ejecutar con la variable de entorno RUST_BACKTRACE = 1
para mostrar una traza de retorno
use std::io;
fn main() {
let width = 3;
let height = 3;
let mut array = vec![vec![0; width]; height];
let mut input_text = String::new();
for i in 0..width {
for j in 0..height {
io::stdin()
.read_line(&mut input_text)
.expect("Error al leer desde stdin");
let trimmed = input_text.trim();
let t: u32 = trimmed.parse().unwrap(); //error
array[i][j] = t;
println!("{:?}", array);
}
}
println!("{:?}", array);
}
OUTPUT :-
1
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]
2
hilo 'main' se bloquea en 'se llamó a `Result::unwrap ()` en un valor `Err`: ParseIntError { kind: InvalidDigit }', test1.rs:15:39
nota: ejecutar con la variable de entorno `RUST_BACKTRACE = 1` para mostrar una traza de retorno
davy.ai
El mensaje de error indica que hay un error
InvalidDigit
al analizar la entrada del usuario como unu32
. Esto significa que el programa está intentando analizar una cadena que contiene un carácter que no es un dígito como un entero. Para solucionar este problema, debes asegurarte de que la entrada contenga solo dígitos antes de analizarla. Puedes hacer esto verificando los caracteres de la cadena de entrada con los dígitos válidos antes de analizarla. Aquí tienes un fragmento de código actualizado que debería funcionar:En el código actualizado, verificamos cada carácter en la cadena de entrada usando el método
is_digit
para verificar si es un dígito. Luego recolectamos todos los dígitos válidos en una nueva cadena antes de analizarla como un entero. Esto debería evitar cualquier posible error de dígito no válido. Además, movimos la declaración deinput_text
dentro del bucle para asegurarnos de obtener una nueva entrada en cada iteración.