Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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,我想在第四位加上“d”。如何获取大于数组中最后一个有效元素索引的索引someArray.length-1返回9。我想获得第四名 编辑: 代码应为: char[] someArray = new char[10]; someArray[0] ='a'; someArray[0] ='b'; someArray[0] ='c'; 在这种情况下,我知道第四个索引是免费的。如果我有: char[] someArray = new char[10]; someArray[0] ='a'; someArr

我想在第四位加上“d”。如何获取大于数组中最后一个有效元素索引的索引
someArray.length-1
返回9。我想获得第四名

编辑: 代码应为:

char[] someArray = new char[10];
someArray[0] ='a';
someArray[0] ='b';
someArray[0] ='c';
在这种情况下,我知道第四个索引是免费的。如果我有:

char[] someArray = new char[10];
someArray[0] ='a';
someArray[1] ='b';
someArray[2] ='c';

首先,但在执行
someArray[0]=..
时,在数组的第一个位置设置字符,并在代码的这个位置重写该值

其次,您的问题的答案是通过执行
someArray[3]=“d”

只要没有达到超出数组大小的索引,数组中的所有元素都是有效的。

首先,但是执行
someArray[0]=..
可以在数组的第一个位置设置字符,并在代码的这个位置重写该值

其次,您的问题的答案是通过执行
someArray[3]=“d”

只要没有达到超出数组大小的索引,数组中的所有元素都是有效的。

数组中的索引从0开始

当您执行
someArray.length-1
时,它采用使用
char[]someArray=new char[10]初始化时的长度


如果您希望到达数组中的第四个位置,请从第0个索引开始计数,您会发现需要在数组中使用索引3,因此您可能希望使用
someArray[3]=所需的\u值

数组中的索引从0开始

当您执行
someArray.length-1
时,它采用使用
char[]someArray=new char[10]初始化时的长度


如果您希望到达数组中的第4个位置,从第0个索引开始计数,您会发现需要在数组中使用索引3,因此您可能希望使用所需的\u值
someArray[3]=您可以使用一种方法来查找数组中第一个空位置的索引号:

void abc(int[] x){
     //I want to add element in the next free index of the array x.
}

您可以使用以下方法查找数组中第一个空位置的索引号:

void abc(int[] x){
     //I want to add element in the next free index of the array x.
}

这是我认为您需要的,它类似于@Mohsen答案,只是我认为这将更具可读性和直截了当

public static int getFirstEmptyIndex(char[] arr){
    int index=0;
    for(char a:arr){
      if(a==0)
      break;
      else
        index++;
    }
    return index;
  }
public static void main(String[] args) {
    char[] someArray = new char[10];
    someArray[0]='a';
    someArray[1]='b';
    someArray[2]='c';
    someArray[getFirstEmptyIndex(someArray)]='d';    
    System.out.println(someArray[3]);
  }
所以,如果没有可用空间,您将得到-1,而不是得到0并意外地替换索引0值

奖金:: 如果要以数组的形式按升序获取所有可用空间,请查看以下内容:


顺便说一句,这不是用于此类操作的最佳算法,请允许任何人随意改进。

这是我认为您需要的,类似于@Mohsen答案,只是我认为这将更具可读性和直观性

public static int getFirstEmptyIndex(char[] arr){
    int index=0;
    for(char a:arr){
      if(a==0)
      break;
      else
        index++;
    }
    return index;
  }
public static void main(String[] args) {
    char[] someArray = new char[10];
    someArray[0]='a';
    someArray[1]='b';
    someArray[2]='c';
    someArray[getFirstEmptyIndex(someArray)]='d';    
    System.out.println(someArray[3]);
  }
所以,如果没有可用空间,您将得到-1,而不是得到0并意外地替换索引0值

奖金:: 如果要以数组的形式按升序获取所有可用空间,请查看以下内容:


顺便说一句,这不是此类操作的最佳算法,请允许任何人随意改进。

所有字符数组元素都是有效的,即使您没有显式初始化它们。您必须记住(例如,通过存储在变量中)有多少元素已初始化。顺便说一句,您只初始化了第一个元素,但初始化了三次。您是否尝试了someArray[3]?检查my@Siddhart Shankar,你想获得数组的即时自由索引吗?这意味着在最后一个被占用的空间之后还有下一个空空间吗?再一次,没有空闲索引这样的东西。您必须通过保留一个值为已使用部分长度的变量来跟踪“未使用”的位置。不,它不会向数组中添加值。它设置数组元素的值。数组始终具有相同的大小。如果您不希望出现这种行为,请使用类似于
ArrayList
的东西。或者,如果希望U+0000(
'\0'
)的值表示“未使用”,则可以找到具有该值的第一个索引。但您并不是真的在数组中“添加”或“删除”。所有字符数组元素都是有效的,即使您没有显式初始化它们。您必须记住(例如,通过存储在变量中)有多少元素已初始化。顺便说一句,您只初始化了第一个元素,但初始化了三次。您是否尝试了someArray[3]?检查my@Siddhart Shankar,你想获得数组的即时自由索引吗?这意味着在最后一个被占用的空间之后还有下一个空空间吗?再一次,没有空闲索引这样的东西。您必须通过保留一个值为已使用部分长度的变量来跟踪“未使用”的位置。不,它不会向数组中添加值。它设置数组元素的值。数组始终具有相同的大小。如果您不希望出现这种行为,请使用类似于
ArrayList
的东西。或者,如果希望U+0000(
'\0'
)的值表示“未使用”,则可以找到具有该值的第一个索引。但您并不是真的在阵列中“添加”或“删除”。谢谢@莫森R.阿克达姆谢谢@莫森R.阿克丹