Java代码:将while循环改为do-while与for循环的技术疑问
替换Java循环结构:将while改为do-while和for循环
没问题,我来帮你搞定把while循环换成do-while和for循环的事儿,顺便帮你理清判断逻辑的处理方式~
1. 替换为do-while循环
do-while的特点是先执行一次循环体,再判断是否继续,刚好适配你需要先输入再判断退出的场景。我们可以把原代码里的break逻辑转化为do-while的循环终止条件,让代码结构更清晰:
import java.util.Scanner; public class ASCII { public static void main(String[] args){ Scanner scan = new Scanner(System.in); String s; char c; do { System.out.println("insert letters. (insert # exit)"); s = scan.next(); c = s.charAt(0); // 只有输入的不是#时,才输出ASCII码 if(c != '#') { System.out.print(c + " ASCII code " + (int)c + " end"); } // 当输入字符不是#时,继续循环;输入#则终止 } while(c != '#'); scan.close(); } }
这里的逻辑是:先执行一次输入操作,判断非#就输出结果,最后通过c != '#'的条件决定是否继续循环——输入#时循环直接终止,完美替代原代码的break逻辑。
2. 替换为for循环
for循环通常用于已知循环次数的场景,但也可以通过设置条件为true实现无限循环,然后在循环体内处理退出逻辑,和原while循环思路类似,只是结构不同:
import java.util.Scanner; public class ASCII { public static void main(String[] args){ Scanner scan = new Scanner(System.in); String s; char c; // 初始化、迭代部分留空,条件设为true实现无限循环 for(;;) { System.out.println("insert letters. (insert # exit)"); s = scan.next(); c = s.charAt(0); // 遇到#就退出循环 if(c == '#') { break; } System.out.print(c + " ASCII code " + (int)c + " end"); } scan.close(); } }
for(;;)等价于while(true),是Java里实现无限循环的常用写法,原代码的if判断和break逻辑可以直接沿用,不需要做太多改动。
你也可以把变量声明放到for的初始化部分,让代码更紧凑:
import java.util.Scanner; public class ASCII { public static void main(String[] args){ Scanner scan = new Scanner(System.in); for(String s; ; ) { System.out.println("insert letters. (insert # exit)"); s = scan.next(); char c = s.charAt(0); if(c == '#') { break; } System.out.print(c + " ASCII code " + (int)c + " end"); } scan.close(); } }
内容的提问来源于stack exchange,提问作者Hellmud
相关产品推荐
相关产品推荐

