如何在java中定义一个没有长度的字符串数组?

时间:2018-04-08 14:46:01

标签: java arrays

我对一个简单的问题感到困惑。你能告诉我如何定义没有长度的字符串数组吗?因为我找不到关于这个问题的任何信息。如果我写String[] str=new String[];String[] str=new String[]{};,他们就会有错误。但为什么? THX !!!

这是我的作业: 编写程序以从命令行参数中读取一系列单词,并找到给定单词的第一个匹配的索引。例如,java First Match女士那位年轻女士照顾老太太。会在句子“那位年轻女士照顾老太太”中找到“女士”第一场比赛的索引,并在控制台的句子中显示其第一次出现的索引,例如“第一场比赛的索引”。 'lady'is 2“。

这是我的代码:

String[] str=new String[11];
        int a=0;
        for(int i=0;i<11;i++){
            str[i] = args[a];
            a++;
        }

5 个答案:

答案 0 :(得分:1)

在您的情况下,您可以按如下方式计算args的数量

int argsCount = args.length;

然后,您可以按如下方式创建数组

String [] str = new String[argsCount - 1];

然后你可以用字词填充字符串数组并搜索数组以找到传递给你的程序的第一个参数

如果您使用可以调整大小的数组,则应使用LinkedList https://www.tutorialspoint.com/java/java_linkedlist_class.htm

答案 1 :(得分:1)

数组是Java中的固定长度数据结构。实例化它时,您必须定义数组的大小,例如:

String [] myString = new String [5];

或者您应该使用其成员对其进行实例化。

String []myStringArray = new String []{"first","second"};

如果您不知道将获得多少元素,请改用ArrayList。 ArrayList的大小可以在运行时动态增加或减少。您可以查看this question以获取有关ArrayLists的更多信息。

答案 2 :(得分:1)

要求:

  • 第一个命令行参数是要搜索的单词
  • 其他参数是形成句子的空格分隔列表
  • 程序应返回其他参数
  • 中第一个参数的索引

示例实施:

public static void main(String[] args)
{
    // Check whether min. one argument is provided.
    if (args.length == 0)
    {
        System.err.println("No arguments provided");
        System.err.println("Usage: <match> <word1> <word2> [...]");
        return;
    }

    // First argument is the word to search for.
    String match = args[0];

    // Iterate the other arguments to find a match.
    for (int i = 1; i < args.length; i++)
    {
        if (match.equals(args[i]))
        {
            // The first argument is the word to search for: Substract index by 1.
            System.out.printf("The index of the first match of '%s' is %d\n", match, (i - 1));
            return;
        }
    }

    System.out.printf("No match of '%s' found\n", match);
}

答案 3 :(得分:0)

如果您希望String[] 0长度:

String[] test = new String[0];

然后

System.out.println(test.length);

会给你

0

修改

提问者的问题是&#34;如何在Java中定义一个没有长度的字符串数组。

要回答提问者的整个问题,&#34;编写一个程序,从命令行读取一系列单词,找到给定单词的第一个匹配的索引&#34;,两个简单的方法是必要的。

读取argments的一种方法,以及另一种查找适当索引的方法。

如果提问者正在使用String[] args方法的main,问题将简化为一种方法(找到他们正在寻找的单词的索引)。< / p>

例如

public static int findIndex(String term, String[] args) {
    int index = -1;

    for (int i = 0; i < args.length; i++) {
        if (args[i].equals(term)) {
            index = i;
            break;
        }
    }

    return index;
}

因此,如果提问者有一个主要方法中的单词列表,

findIndex("lady", args);

将返回索引。

答案 4 :(得分:0)

指定为其分配内存时的数组长度,但在声明时不需要这样做。原因是在为阵列分配内存之前,JVM应该知道应该分配多少内存。

所以我认为ecen虽然你可以声明一个没有长度的数组,但是在指定你需要的内存量之前你无法实际使用该数组。

为了解决这个问题,人们开发了ArrayListArrayList不需要数组的大小。您所要做的就是:

ArrayList<String> array=new ArrayList<String>();
for(int i=0;i<args.length;++i)
{
    array.add(args[i]);
}

要将ArrayList转换为String []数组,请使用此。

String [] arrarray=new String[array.size()];
arrarray=array.toArray(arrarray);