qcjj的蝴蝶结1
方法:
// 导入java.util.Scanner类
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 创建Scanner对象,用于从标准输入读取数据
Scanner scan = new Scanner(System.in);
// 读取整数t代表测试用例的数量
int t = scan.nextInt();
// 开始循环t个测试用例
while (t-- != 0) {
// 读取整数n,代表本次测试用例数字的数量
int n = scan.nextInt();
// 创建一个长度为n的整型数组a,用于存储本次测试用例读入的数字
int[] a = new int[n];
// 定义并初始化一个变量ans,表示本次测试用例中奇数的个数
int ans = 0;
// 循环读取n个数字,判断它们是否为奇数
for (int i = 0; i < n; i++) {
// 读取第i个数字,并将其存入数组a的第i个元素
a[i] = scan.nextInt();
// 如果第i个数字是奇数,则将ans加1
if (a[i] % 2 == 1) {
ans++;
}
}
// 打印本次测试用例中奇数的个数
System.out.println(ans);
}
// 程序运行结束
}
}
问题:
while(t-- != 0){ } 和 while(t != 0)有什么区别?
代码演示:
public class Main {
public static void main(String[] args) {
int t = 3;
System.out.println("Using while(t-- != 0):");
while(t-- != 0) {
System.out.println("t = " + t);
}
System.out.println("Using while(t != 0):");
t = 3;
while (t != 0) {
System.out.println("t = " + t);
t--;
}
}
}
// 输出结果如下:
Using while(t-- != 0):
t = 2
t = 1
t = 0
Using while(t != 0):
t = 3
t = 2
t = 1
// 说明: 第一段代码使用了后缀自减操作符 --,循环体内每执行一次,就会对循环条件中的 t 进行一次自减操作。
// 因此,在 t 的值依次为 3、2、1 时,循环体内都能正确地输出。
// 而第二段代码在循环体内手动执行了 t-- 操作,将 t 的值从 3 减小到 0,循环成功结束。