main方法String [] args问题

时间:2014-11-16 16:52:01

标签: java menu arguments args

我正在阅读 Sams 24小时内自学Java 并且遇到了这段代码:

class NewRoot {

   public static void main(String[] args) {
      int number = 100;
      if (args.length > 0) {
         number = Integer.parseInt(args[0]);
      }
      System.out.println(“The square root of “
           + number
           + " is "
           + Math.sqrt(number));
   }
}

但为了编译代码,编写者在

的Arguments字段中输入169
  

运行>设置项目配置>自定义

菜单(在NetBeans IDE中)。

所以我的问题是:具体领域的目的是什么? 169意味着什么,还是只是一个随机数?遗憾的是作家没有对此发表任何意见!

2 个答案:

答案 0 :(得分:1)

作者给出了一个运行程序的示例,该程序包含通过终端给出的参数。这通常通过运行代码

在终端或命令提示符中完成
javac ProgramName.java
java ProgramName <arguments>

由于您在Netbeans中编写和运行程序,并且不使用终端,因此可以配置为使用给定的命令行参数运行项目。这就是你在netbeans菜单中所做的。

字符串“169”仅对给定程序有意义。作者试图演示如何在给定命令行参数的情况下运行程序,在这种情况下,他将其设置为任意值“169”。 在您的代码中,您将获取此String并将其转换为int。

答案 1 :(得分:1)

数字169几乎肯定是毫无意义和随意的;它只是作为一个例子使用。现在让我们逐行打破代码,以解决您的问题。

args包含任何命令行参数作为字符串数组:

public static void main(String[] args) {

作者声明了int类型的变量,并将其称为number。他将初始值指定为100.这似乎是一个随机选择的数字来演示这个概念 - 编程书籍的常用方法。

int number = 100;
然后,他检查是否提供了任何命令行参数;如果有,args.length将大于零:

if (args.length > 0)

如果存在命令行参数,则会将第一个参数解析为number变量(如果提供非数字的第一个参数,此操作可能会失败):

{
   number = Integer.parseInt(args[0]);
}

请注意,如果存在 no 命令行参数,则number 不会被覆盖。因此,在没有命令行参数的情况下调用程序,它将显示100的平方根。使用169的参数调用它(当然是从空中挑选另一个数字),它将显示169的平方根。

命令行参数将打包到args;程序启动后从按键等输入不会。