Java 打印命令行中应提供的数组大小
声明整数值的数组Java 打印命令行中应提供的数组大小,java,arrays,Java,Arrays,声明整数值的数组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]; } } } 公共A类{ 公共静
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];
}
}
}
公共A类{
公共静态void main(字符串[]args){
int[]a;
int[]b=新的int[n];
对于(int i=0;i
这是我的代码,但我认为它是不正确的。我应该在代码中使用变量args吗?请给我解释更多关于内存分配的内容。谢谢。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");
}
}
}
A类{
公共静态void main(字符串[]args){
试一试{
字符串nn=args[0];
int n=整数.parseInt(nn);
int[]a=新的int[n];
对于(int i=0;i
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");
}
}
}
A类{
公共静态void main(字符串[]args){
试一试{
字符串nn=args[0];
int n=整数.parseInt(nn);
int[]a=新的int[n];
对于(int i=0;i
是的,您应该在代码中使用变量args
将字符串参数解析为数字:
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);
}
}
请参阅:是的,您应该在代码中使用变量args 将字符串参数解析为数字:
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);
}
}
请参阅:您确实需要使用
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]); }
- 或使用Java流:
或者
或Arrays.stream(m).forEach(System.out::println);
有关内存分配的详细信息:
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]); }
- 或使用Java流:
或者
或Arrays.stream(m).forEach(System.out::println);
有关内存分配的详细信息:
因为您不需要任何导入,所以使用args就不那么复杂了 不清楚您是否需要Inputstream或类似的扫描仪,或者是否可以使用args: 数组的大小应由中提供的参数定义 程序执行期间的命令行 “Parameter”听起来很像args,但它们是在程序执行之前提供的,而不是在执行期间提供的 但在程序执行期间,我不会将其称为参数,而是输入
因为您不需要任何导入,所以使用args就不那么复杂了 您应该使用
main()
的String[]args
参数来访问任何命令行参数。请仔细阅读那些参数的含义。您的代码也不正确,原因还有两个:您没有初始化a[]
,因此您将在b[i]=a[i]
处获得NullPointerException
;正如您将看到的,变量n
没有在任何地方声明,因此这将导致编译错误。好的,我将解决这些错误。但是我应该使用for循环来完成这个任务吗?关于内存分配-有两个术语需要知道-声明和定义。。。当您编写int[]a
时,它只是声明的,但没有定义,因此您无法访问例如a[0]
-您将获得空指针,为了避免这种情况,您必须对其进行定义-例如int[]a=new int[5]
然后您将获得分配的数组大小为5项(int的默认值为0,因此