我是一个新手rust程序员,我正在编写一个程序,打印一个表,并使用循环从用户那里获取数值,每次用户输入数值时,表都会更新并再次打印,直到收到所有值.
class1 class2 class3 class4 class5
Sensor 0 0 0 0 0
visual 0 0 0 0 0
我想将光标放在所需的单元格上(如果可能,闪烁),用户将为其输入值.这意味着在第一次迭代时,光标应位于单元格sensor-class1
处,第二次迭代应位于单元格sensor-class2
处,以此类推.
我搜索了一会儿,似乎termion是解决方案,但print!("{}", termion::cursor::Goto((10 * i).try_into().unwrap(), j));
extern crate termion;
use std::io;
fn main() {
let mut sensor_data = [0; 5];
let mut visual_data = [0; 5];
for j in 1..3 {
for i in 1..6 {
print!("{}", termion::clear::All);
print!("{}", termion::cursor::Goto(1, 1));
println!(
"{0: <10} {1: <10} {2: <10} {3: <10} {4: <10} {5: <10}",
"", "class1", "class2", "class3", "class4", "class5"
);
println!(
"{0: <10} {1: <10} {2: <10} {3: <10} {4: <10} {5: <10}",
"Sensor",
sensor_data[0],
sensor_data[1],
sensor_data[2],
sensor_data[3],
sensor_data[4]
);
println!(
"{0: <10} {1: <10} {2: <10} {3: <10} {4: <10} {5: <10}",
"visual",
visual_data[0],
visual_data[1],
visual_data[2],
visual_data[3],
visual_data[4]
);
//update the cursor position for user input
let mut input = String::new();
io::stdin()
.read_line(&mut input)
.expect("Failed to read line");
if j == 1 {sensor_data[i - 1] = input.trim().parse().expect("Please type a number!");}
else {visual_data[i - 1] = input.trim().parse().expect("Please type a number!");}
}
}
// print the complete table and go on
}