用java实现一个程序,使得传入一个正整数为N的参数之后,能顺序打印从1到N的全部正整数,实现后分别记录两种方法中N为1千、1万、10万时的用时和出现的结果数
时间: 2024-09-30 18:11:54 浏览: 38
编写一个Java应用程序,产生20个50-100之内的整数,并输出这20个数并找出最大数及最小数输出
5星 · 资源好评率100%
在Java中,我们可以使用两种常见的方法来实现这个功能:一种是使用循环直接遍历,另一种是利用数组一次性生成。下面我会展示这两种方法,并计算当N为1千、1万和10万时的时间消耗以及结果的数量。
**方法一:循环遍历**
```java
public class PrintNumbers {
public static void main(String[] args) {
int N = 10000; // 或者替换成1000, 100000
long startTime = System.nanoTime();
for (int i = 1; i <= N; i++) {
System.out.println(i);
}
long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.printf("当N为%d时,用时约%.6f毫秒,打印了%d个数字.\n", N, duration / 1e6, N);
// 记录并打印其他数值的情况
// ...
}
}
```
为了测量N为1千、1万、10万时的时间,你需要在`main`方法里添加对应的N值,并重复上述步骤。
**方法二:使用ArrayList(对于大N值性能更好)**
```java
import java.util.ArrayList;
public class PrintNumbersArray {
public static void main(String[] args) {
int N = 10000; // 替换成1000, 100000
ArrayList<Integer> numbers = new ArrayList<>();
for (int i = 1; i <= N; i++) {
numbers.add(i);
}
long startTime = System.nanoTime();
numbers.forEach(System.out::println);
long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.printf("当N为%d时,用时约%.6f毫秒,打印了%d个数字.\n", N, duration / 1e6, N);
// 记录并打印其他数值的情况
// ...
}
}
```
对于每个N值,你需要分别运行这两个方法并记录时间。由于这里是一个演示,实际运行时你可以使用Java的`System.currentTimeMillis()`代替`System.nanoTime()`来获取时间,并用计时器库(如`Joda-Time`或`java.time`)进行更准确的测量。记得在每次循环结束后都清空列表,以避免影响下一次测试的准确性。
阅读全文