Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_String - Fatal编程技术网

Java 将字符串参数添加到数组末尾

Java 将字符串参数添加到数组末尾,java,arrays,string,Java,Arrays,String,我必须在数组的末尾添加一个字符串参数。如果该字符串已存在于数组中,则引发异常。我不知道。有人能帮忙吗? 这就是我目前所拥有的 public static void addCity (String city) throws Exception { for (int i = 0; i < MAX_CITIES;i++) { if (city == cityNames[i]) throw new Exception("This city a

我必须在数组的末尾添加一个字符串参数。如果该字符串已存在于数组中,则引发异常。我不知道。有人能帮忙吗? 这就是我目前所拥有的

public static void addCity (String city) throws Exception
{
    for (int i = 0; i < MAX_CITIES;i++)
    {
        if (city == cityNames[i])
            throw new Exception("This city already exists");
    }

    String [] temp = new String[cityNames.length+1];
    for (int i = 0; i < cityNames.length;i++) {
        temp[i] = cityNames[i];
    }
    temp[temp.length-1] = city;
    cityNames = temp;

    manyItems++;
}
publicstaticvoidaddcity(stringcity)抛出异常
{
对于(int i=0;i
要测试
字符串a
是否等于
字符串b
,请使用
a.equals(b)
,而不是
a==b


(<代码> A==B</代码>在C++中工作,而不是java。)< /P> < p>除了代码< >字符串< /C> > >:

,代码看起来很好
if (city == cityNames[i])
这不会进行正确的
字符串比较:它只会比较对象引用,通常是
false

为此使用
String.equals

if (city.equals(cityNames[i]))

什么是MAX_CITIES?我认为您的第一个循环应该是直到I 您应该使用equals()方法来比较字符串对象,而不是==

如果不只是将新数组增大一个元素,而是将大小增加一倍,这也可能很好。这样,您就不必在每次添加新元素时都完成复制数组的所有工作。您需要一个变量来跟踪数组中的下一个空白点,它看起来像这样:

if (nextEmptyIndex == cityNames.length)
{
    String [] temp = new String[cityNames.length*2];
    for (int i = 0; i < cityNames.length;i++) {
        temp[i] = cityNames[i];
    }
}
temp[nextEmptyIndex] = city;
nextEmptyIndex++;
manyItems++;
if(nextentinIndex==cityNames.length)
{
字符串[]临时=新字符串[cityNames.length*2];
对于(int i=0;i
使用列表会更容易:

List<String> cityNames = new ArrayList<String>();

if(cityNames.contains(city)) {
    throw new Exception("This city already exists");
}
cityNames.add(city);
List cityNames=new ArrayList();
if(城市名称包含(城市)){
抛出新异常(“此城市已存在”);
}
cityNames.add(城市);

您遇到了什么问题?理想情况下,如果您想要实现动态增加的数组。。改为使用ArrayList..看起来OP处于学习阶段(否则使用增量为1的普通数组将非常糟糕)。