Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 为什么从循环内部向向量追加值只返回最后的值?_Loops_Vector_Rust - Fatal编程技术网

Loops 为什么从循环内部向向量追加值只返回最后的值?

Loops 为什么从循环内部向向量追加值只返回最后的值?,loops,vector,rust,Loops,Vector,Rust,更新 谢谢大家的帮助。我想我差不多完成了,但是我得到了一个错误,read_one()隐式返回(),因为它的主体没有尾部或返回表达式。有什么想法吗 use::std::io; use::std::collections::HashMap; fn read_one() -> String { let mut words = String::new(); io::stdin().read_line(&mut words) .ok() .e

更新 谢谢大家的帮助。我想我差不多完成了,但是我得到了一个错误,read_one()隐式返回(),因为它的主体没有尾部或返回表达式。有什么想法吗

use::std::io;
use::std::collections::HashMap;

fn read_one() -> String {
    let mut words = String::new();
    io::stdin().read_line(&mut words)
        .ok()
        .expect("Failed to read line.");
}

fn main() {

    let mut tax_rates = HashMap::new();
    tax_rates.insert("AL".to_string(), 0.04);
    tax_rates.insert("AK".to_string(), 0.00);
    tax_rates.insert("AZ".to_string(), 0.056);
    tax_rates.insert("AR".to_string(), 0.65);
    tax_rates.insert("CA".to_string(), 0.725);
    tax_rates.insert("CO".to_string(), 0.029);
    tax_rates.insert("CT".to_string(), 0.635);
    tax_rates.insert("DE".to_string(), 0.00);
    tax_rates.insert("DC".to_string(), 0.06);
    tax_rates.insert("FL".to_string(), 0.06);
    tax_rates.insert("GA".to_string(), 0.04);
    tax_rates.insert("HI".to_string(), 0.04);
    tax_rates.insert("ID".to_string(), 0.06);
    tax_rates.insert("IL".to_string(), 0.0625);
    tax_rates.insert("IN".to_string(), 0.07);
    tax_rates.insert("IA".to_string(), 0.06);
    tax_rates.insert("KS".to_string(), 0.065);
    tax_rates.insert("KY".to_string(), 0.06);
    tax_rates.insert("LA".to_string(), 0.0445);
    tax_rates.insert("ME".to_string(), 0.055);
    tax_rates.insert("MD".to_string(), 0.06);
    tax_rates.insert("MA".to_string(), 0.0625);
    tax_rates.insert("MI".to_string(), 0.06);
    tax_rates.insert("MN".to_string(), 0.06875);
    tax_rates.insert("MS".to_string(), 0.07);
    tax_rates.insert("MO".to_string(), 0.0425);
    tax_rates.insert("MT".to_string(), 0.00);
    tax_rates.insert("NE".to_string(), 0.055);
    tax_rates.insert("NV".to_string(), 0.0685);
    tax_rates.insert("NH".to_string(), 0.00);
    tax_rates.insert("NJ".to_string(), 0.06625);
    tax_rates.insert("NM".to_string(), 0.05125);
    tax_rates.insert("NY".to_string(), 0.04);
    tax_rates.insert("NC".to_string(), 0.0475);
    tax_rates.insert("ND".to_string(), 0.05);
    tax_rates.insert("OH".to_string(), 0.0575);
    tax_rates.insert("OK".to_string(), 0.045);
    tax_rates.insert("OR".to_string(), 0.00);
    tax_rates.insert("PA".to_string(), 0.06);
    tax_rates.insert("RI".to_string(), 0.07);
    tax_rates.insert("PR".to_string(), 0.115);
    tax_rates.insert("SC".to_string(), 0.06);
    tax_rates.insert("SD".to_string(), 0.045);
    tax_rates.insert("TN".to_string(), 0.07);
    tax_rates.insert("TX".to_string(), 0.0625);
    tax_rates.insert("UT".to_string(), 0.0485);
    tax_rates.insert("VA".to_string(), 0.043);
    tax_rates.insert("VT".to_string(), 0.06);
    tax_rates.insert("WA".to_string(), 0.065);
    tax_rates.insert("WV".to_string(), 0.06);
    tax_rates.insert("WI".to_string(), 0.05);
    tax_rates.insert("WY".to_string(), 0.04);

    println!("In what state are you making your purchase?");
    let state = read_one();
    let state = state.trim().to_uppercase();

    println!("How many items are you purchasing?");
    let mut purchase_number = read_one();
    let mut purchase_number = purchase_number.trim().parse::<i32>().unwrap();

    match tax_rates.get(&state) {
        Some(rate) => {
            println!("The tax rate for {} is ({}).", state, rate);
        }
        None => {
            println!("None.");
        }
    }

    let mut tax_vec = Vec::new();
    let mut cost_vec = Vec::new();

    for item_number in 0..purchase_number {
        println!("What is the cost of item number {}?", item_number);
        let item_cost = read_one();
        let item_cost = item_cost.trim().parse::<f64>().unwrap();

        match tax_rates.get(&state) {
            Some(rate) => {
                let tax_amount = item_cost * rate;
                let fin_cost = item_cost + tax_amount;
                println!("The tax amount for item {} is: {:.2}", 
                item_number, tax_amount);
                println!("The final cost of item number {} is: {:.2}",
                item_number, fin_cost);

                tax_vec.push(tax_amount);
                cost_vec.push(fin_cost);
            }

            None => {
                println!("None.");
            }
        }   
    }

    println!("{:?}", tax_vec);
    println!("{:?}", cost_vec);
}
use::std::io;
use::std::collections::HashMap;
fn read_one()->字符串{
让mut words=String::new();
io::stdin()。读取行(&多个字)
.ok()
.expect(“未能读取行”);
}
fn main(){
让mut tax_rates=HashMap::new();
税率。插入(“AL”。至字符串(),0.04);
税率。插入(“AK”。至字符串(),0.00);
税率。插入(“AZ”。至字符串(),0.056);
税率。插入(“AR”。至字符串(),0.65);
税率。插入(“CA”。至字符串(),0.725);
税率。插入(“CO”。至字符串(),0.029);
税率。插入(“CT”。至字符串(),0.635);
税率。插入(“DE”。至字符串(),0.00);
税率。插入(“DC”。至字符串(),0.06);
税率。插入(“FL”。至字符串(),0.06);
税率。插入(“GA”。至字符串(),0.04);
税率。插入(“HI”。至字符串(),0.04);
税率。插入(“ID”。至字符串(),0.06);
税率。插入(“IL”。至字符串(),0.0625);
税率。插入(“IN.”to_string(),0.07);
税率。插入(“IA”。至字符串(),0.06);
税率。插入(“KS”。至字符串(),0.065);
税率。插入(“KY”。至字符串(),0.06);
税率。插入(“LA”。至字符串(),0.0445);
税率。插入(“ME.”至字符串(),0.055);
税率。插入(“MD”。至字符串(),0.06);
税率。插入(“MA”。至字符串(),0.0625);
税率。插入(“MI”。至字符串(),0.06);
税率。插入(“MN”。至字符串(),0.06875);
税率。插入(“MS”。至字符串(),0.07);
税率。插入(“MO”。至字符串(),0.0425);
税率。插入(“MT”。至字符串(),0.00);
税率。插入(“NE”。至字符串(),0.055);
税率。插入(“NV”。至字符串(),0.0685);
税率。插入(“NH”。至字符串(),0.00);
税率。插入(“NJ”。至字符串(),0.06625);
税率。插入(“NM”。至字符串(),0.05125);
税率。插入(“NY”。至字符串(),0.04);
税率。插入(“NC”。至字符串(),0.0475);
税率。插入(“ND”。至字符串(),0.05);
税率。插入(“OH”。至字符串(),0.0575);
税率。插入(“确定”。至字符串(),0.045);
税率。插入(“或”。至字符串(),0.00);
税率。插入(“PA”。至字符串(),0.06);
税率。插入(“RI”。至字符串(),0.07);
税率。插入(“PR”。至字符串(),0.115);
税率。插入(“SC”。至字符串(),0.06);
税率。插入(“SD”。至字符串(),0.045);
税率。插入(“TN.”至字符串(),0.07);
税率。插入(“TX”。至字符串(),0.0625);
税率。插入(“UT”。至字符串(),0.0485);
税率。插入(“VA”。至字符串(),0.043);
税率插入(“VT.”至字符串(),0.06);
税率。插入(“WA”。至字符串(),0.065);
税率。插入(“WV”。至字符串(),0.06);
税率。插入(“WI”。至字符串(),0.05);
税率。插入(“WY”。至字符串(),0.04);
println!(“您在什么状态下进行购买?”);
让state=read_one();
让state=state.trim()到大写字母();
println!(“您要购买多少件商品?”);
让mut purchase_number=read_one();
让mut purchase_number=purchase_number.trim().parse:().unwrap();
匹配税率。获取(&state){
部分(费率)=>{
println!({}的税率为({})。”,州,税率);
}
无=>{
println!(“无”);
}
}
让mut tax_vec=vec::new();
让mut cost_vec=vec::new();
对于0中的项目编号..采购编号{
println!(“项目编号{}的成本是多少?”,项目编号);
让项目成本=读取一个();
让item_cost=item_cost.trim().parse:().unwrap();
匹配税率。获取(&state){
部分(费率)=>{
税额=项目成本*费率;
财务成本=项目成本+税金金额;
println!({}项的税额为:{:.2}),
项目编号、税额);
println!(“项目编号{}的最终成本为:{:.2}),
项目编号、财务成本);
税额推送(税额);
成本推动(财务成本);
}
无=>{
println!(“无”);
}
}   
}
println!(“{:?}”,tax_vec);
println!(“{:?}”,成本);
}
原始问题 我对生锈(以及一般的编码)和一个简单的程序不太熟悉,这个程序计算许多购买物品的州销售税。在结束之前,我想让这个项目把所有的税和所有的最终成本加起来。我试图将值存储在两个向量中并打印出来,但出于某种原因,它只返回最后的值


如何打印用户的总税费和总成本?

每次迭代创建一个新向量,然后仅在最后一次迭代中打印值。相反,在循环之前创建向量。您可能还希望在循环完成后打印总和。这样做会导致编译器错误,指出
tax\u vec
/
cost\u vec
在那里不可用。作为第一步,在每次迭代中创建一个新向量,然后仅在最后一次迭代中打印值。相反,在循环之前创建向量。您可能还希望在循环完成后打印总和。这样做会导致编译器错误,指出那里没有
tax\u vec
/
cost\u vec