如何用Rust的for循环打印半金字塔?代码异常问题求助
问题原因与解决方案
你的问题出在**println!("*")**这个语句上——println!会在输出内容后自动添加换行符,导致每个星号都单独占了一行。要实现预期的每行多星号效果,应该用print!("*"),它只会输出内容而不自动换行,等内层循环把当前行的所有星号都输出完,再用println!()来换行。
修正后的代码如下:
#![allow(unused_variables)] #![allow(dead_code)] #![allow(unused_mut)] fn main() { let mut x: isize; let mut y: isize; y = 5; for x in 0..=y { for _ in 0..=x { print!("*"); // 替换为print!,不自动换行 } println!(); // 内层循环结束后换行,开启新行 } }
运行这段代码就能得到你预期的半金字塔输出:
* ** *** **** *****
另外可以简化代码——你声明的mut x和mut y其实没必要,因为for x in 0..=y里的x是循环作用域内的新变量,和外部声明的变量无关,简化后代码更整洁:
#![allow(unused_variables)] #![allow(dead_code)] fn main() { let y = 5; for x in 0..=y { for _ in 0..=x { print!("*"); } println!(); } }
内容的提问来源于stack exchange,提问作者Saksham Mahajan
相关产品推荐
相关产品推荐

