Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打印命令行中应提供的数组大小_Java_Arrays - Fatal编程技术网

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);
    


有关内存分配的详细信息:


不清楚您是否需要Inputstream或类似的扫描仪,或者是否可以使用args:

数组的大小应由中提供的参数定义 程序执行期间的命令行

“Parameter”听起来很像args,但它们是在程序执行之前提供的,而不是在执行期间提供的

但在程序执行期间,我不会将其称为参数,而是输入


因为您不需要任何导入,所以使用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,因此