声明整数值的数组m
并创建它(分配内存(。数组的大小应由程序执行过程中命令行中提供的参数定义。
public class A {
public static void main(String[] args) {
int[] a;
int[] b = new int[n];
for (int i = 0; i < n; i++) {
b[i] = a[i];
}
}
}
这是我的代码,但我认为这是不正确的。我应该在代码中使用变量ARG吗?并请向我解释有关内存分配的更多信息。谢谢。
1(您需要初始化 a[]
2(使用String[] args
检索命令行参数(并且您需要将其解析为整数(
尝试这样。
class A {
public static void main(String[] args) {
try {
String nn = args[0];
int n = Integer.parseInt(nn);
int[] a = new int[n];
for (int i = 0; i < n; i++) {
// your implementation goes here
}
}
catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Please specify a argument");
}
catch (NumberFormatException e) {
System.out.println("Argument must be a integer value");
}
}
}
是的,您应该在代码中使用变量ARG。
分析字符串arg to number:
int firstArg;
if (args.length > 0) {
try {
firstArg = Integer.parseInt(args[0]);
} catch (NumberFormatException e) {
System.err.println("Argument" + args[0] + " must be an integer.");
System.exit(1);
}
}
参考:https://docs.oracle.com/javase/tutorial/essential/environment/cmdlineargs.html
您确实需要使用args
变量。您传递给Java程序的参数存储在JVM中的args
变量中,使其可用于程序员。
我假设一个参数(预期的数组大小(传递给程序,这将是args[0]
。
您需要将此字符串作为int解析,然后将该数字用作数组大小:
// We assume args[0] exists and can be parsed as an integer, or else a
// NumberFormatException will be thrown
int size = Integer.valueOf(args[0]);
// We can use the size variable as array size.
int[] m = new int[size];
现在,数组m
具有通过命令行给出的数字的大小。请注意,数组大小在编译时不知道,仅在运行时。创建后无法调整数组大小。可以使用m.length
检索其长度。它的值初始化为0
。
如果要打印数组的每个元素,则可以使用
for循环:
for (int i = 0; i < m.length; i++) { // Loop variables are often called i // System.out.println prints its argument to the console System.out.println(m[i]); }
或用于循环的增强(也称为foreach循环(:
for (int n : m) { System.out.pritnln(n); }
或使用Java流:
Arrays.stream(m).forEach(System.out::println);
或
IntStream.of(m).forEach(System.out::println);
更多关于内存分配的信息:
- 了解内存管理
- JVM的实际记忆分配以及它们如何不同?
尚不清楚,无论您是否需要在Inputstream上或类似的内容,还是可以使用ARGS:
:数组的大小应由提供的参数定义 程序执行期间的命令行。
"参数"听起来很像ARG,但是在程序执行之前提供了它们,而不是在。
。但是在程序执行期间,我不会将其称为参数,而是一个输入。
由于您不需要任何导入,因此使用ARGS并不那么复杂。