【问题标题】:Display values from String [] args显示来自 String [] args 的值
【发布时间】:2013-11-27 14:58:35
【问题描述】:

我已经开始学JAVA了,我学会了main方法

public static void main (String [] chpt)

编码人员经常喜欢编写的 ARGS 也可以更改为您想要的任何单词。我声明中的 ARGS 或 CHPT 应该是一个数组。如何查看这个数组的内容? 我试过了

System.out.println(Arrays.deepToString(chpt)); and
System.out.println(Arrays.toString(chpt));

这是整个程序

public class Dislpy{    
static int square(int num) {
    // TODO Auto-generated method stub
    return num *num;

}
public static void main(String[] chpt) {
    // TODO Auto-generated method stub
    int num = 12;

    int counter = chpt.toString().length();
    System.out.println("Squared is " +square(num) +" " +counter);
    System.out.println(Arrays.deepToString(chpt));
     for (int i = 0; i<= counter; i++){
        System.out.println("over here "+chpt.toString().indexOf(i));
    }
   }
}

但它没有工作,输出是

Squared is 144 27
[]
Over here -1.................this line was printed 27 times.

27 是多少? 27 在这里意味着什么?正如@peeskillet 在他的回答中提到的那样,没有通过命令行传递任何参数,因此它不会显示任何参数。

我想访问 chpt 数组的内容。帮助我更好地理解这一点。谢谢,干杯!

Eclipse 中显示的输出

【问题讨论】:

  • 恭喜,你有什么问题?
  • 很抱歉,我在写下整个问题之前不小心按了 Enter。请问可以推翻反对票吗?
  • 您需要在填充任何数组之前将参数实际传递给它
  • 完成,投票恢复:)

标签: java methods main


【解决方案1】:
for (String argument : chpt) {
    System.out.println(argument);
}

【讨论】:

  • 或一行:System.out.println(Arrays.asList(chpt));
  • 嗨。我已经添加了输出和程序的图像,你能看一下吗。
  • 我很犹豫,假设默认数组大小必须为 27 字节,对吗?为什么输出显示为 27,数字 27 代表什么?
【解决方案2】:

试试这个

for(String s : chpt){
   System.out.println(s);
}

这不仅适用于 String[] 参数。对于所有 Iterable ..

【讨论】:

  • 好吧,技术上适用于所有的 Iterables。数组、列表等
【解决方案3】:

您想要一个打印字符串数组的每个索引的方法,即

public static void printStringArray(String[] myArray){
    for(int i = 0; i < myArray.length; i++){
        System.out.println(myArray[i]);
    }
}

【讨论】:

  • for each 更好,使用 java 7 :)
  • 尽管如此,显式迭代并没有错。我认为这不值得投反对票。
  • 使用foreach 比使用for-loop 有什么好处?从来没有人真正告诉过我,他们之间有任何陷阱或好处。
  • 如果这是唯一的好处,那我就留在for-loops
  • 或者使用更冗长的语言,例如 COBOL :) 简单意味着 easier to read。代码的阅读次数比编写次数多得多。像int i 这样的附加变量是浪费。
【解决方案4】:
String [] chpt// would print out [] as it contains no values nor are values added to it.

【讨论】:

    【解决方案5】:

    更新答案

    这行得通:

    public static void main(String[] chpt) {
        int counter = Integer.parseInt(chpt[0]);
        for (int i = 0; i <= counter; i++) {
            System.out.println("over here " + square(i));
        }
    }
    
    over here 0
    over here 1
    over here 4
    over here 9
    

    数组长度

    您的代码中的魔法 27 是字符串长度,而不是数组大小:

    chpt.toString().length() == 27
    "[Ljava.lang.String;@5dcba031".length() == 27
    

    正确的方法是

    System.out.println(chpt.size());
    

    打印数组

    使用数组是:

    public static void main(String[] args) {
        System.out.println(java.util.Arrays.toString(args));
    }
    

    args 是原始类型String[]

    System.out.println(Arrays.toString(args)); 
    

    什么时候打印出类似这样的结果:

    [Ljava.lang.String;@5dcba031
    

    但转换为列表后"

    System.out.println(Arrays.toString(args));
    

    很好地打印所有元素

    【讨论】:

    • 我已经改进了问题并添加了输出图像。你能检查一下并澄清我的疑问吗?
    • 嗨。我在命令行中添加了参数并显示它,谢谢,但我有疑问。是否假设默认数组大小为 27 字节,对吗?为什么输出显示为 27,数字 27 代表什么?
    • 不,这是字符串 chpt.toString() -> [Ljava.lang.String;@5dcba031(27 个字符)的长度。数组chpt的长度为1,用System.out.println(chpt.length());打印出来
    • 我写过 counter=chpt.toString().length();计数器的 sysout 是 27。在代码中,数字 27 是什么?
    • "[Ljava.lang.String;@5dcba031".length() == 27,确保打印System.out.println(chpt.toString());
    【解决方案6】:

    运行这个测试

    文件TestClass.java

    public class TestClass {
        public static void main(String[] args){
            if (args.length == 0){
                System.out.println("You need at least one arg dummy!");
                System.exit(0);
            } else {
                for (String s : args){
                    System.out.println(s);
                }
            }
        }
    }
    

    将文件另存为 TestClass.java
    转到您的命令行并转到 java 文件的目录并键入:
    javac TestClass.java
    然后输入:
    java TestClass "Hello, world!" "Hello, Dummy!" "Where are my Dragons?!"

    看看你得到了什么。

    传递给命令行的每个参数都用空格分隔。如果我把引号去掉,就会有 8 个参数而不是 3 个。

    【讨论】:

    • 嗨。我能够得到参数的总数。是否可以显示 Chpt 的内容?我试过你的方法,但没有奏效。我添加了一个显示输出的图像。
    • 是否假设默认数组大小为 27 字节,对吗?为什么输出显示为 27,数字 27 代表什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2012-10-21
    • 2015-01-13
    • 2018-08-28
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多