【发布时间】:2019-05-27 03:28:42
【问题描述】:
我正在用 rust 编写一个非常简单的命令行计算器,获取一个数字、一个运算符,然后是另一个数字,然后进行计算并打印结果。为了显示我从命令 args 中得到什么,我在主代码之前将它们打印在一个循环中。我对加号、减号和除法工作得很好,但是对于乘法,我得到了意想不到的结果,当我打印它时,我得到了当前目录上的文件列表,而不是星号 (*) 进行乘法运算。 这是我的 rust 代码,如果有任何解决方法,我将不胜感激。
use std::env;
fn main(){
let args: Vec<String> = env::args().collect();
for arg in args.iter(){
println!("{}", arg);
}
let mut result = 0;
let opt = args[2].to_string();
let oper1 = args[1].parse::<i32>().unwrap();
let oper2 = args[3].parse::<i32>().unwrap();
match opt.as_ref(){
"+" => result = oper1 + oper2,
"-" => result = oper1 - oper2,
"*" => result = oper1 * oper2,
"/" => result = oper1 / oper2,
_ => println!("Error")
}
println!("{} {} {} = {}", oper1, opt, oper2, result);
}
【问题讨论】:
-
你的 shell 正在转换星星。这不是程序。您可以将其用引号括起来,例如“*”,它应该可以工作(将其传递到应用程序时)