while循环实现倒星型图案异常求助:仅首行输出星号其余行空白
倒星型图案while循环问题排查与修复
你的代码问题出在变量s没有每次外层循环都重置。第一次循环结束后s已经变成了6,后面的内层循环条件永远不满足,自然打不出星号。
修正方法很简单,把s的初始化移到外层while循环里面,每次开始打印新一行时,都把s重新设为1:
Scanner sc = new Scanner(System.in); System.out.println("Please enter your input : "); int n = sc.nextInt(); int i = 1; while(i<=n) { int s = 1; // 把s的初始化移到这里,每次外层循环都重置 while(s<=n-i+1) { System.out.print("*"); s++; } System.out.println(); i++; }
为什么这样改?因为每一行需要打印的星号数量是n-i+1,每次打印新行都得从第一个星号开始计数,所以s必须每次都从1重新开始。原来的写法里s只初始化一次,用完后就一直大于后续行所需的数量,内层循环根本不会执行,导致后面的行全是空白。
内容的提问来源于stack exchange,提问作者Vikas Jha
相关产品推荐
相关产品推荐

