Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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类方法:使用for循环编辑字符串数组_Java - Fatal编程技术网

Java类方法:使用for循环编辑字符串数组

Java类方法:使用for循环编辑字符串数组,java,Java,坦率地说,我正在创建一个名为“Directory”的类,该类处理/提供目录操作,例如读取目录数据,以独立于大小写的方式检查目录中是否存在名称,向目录添加名称,从目录中删除名称,并将更新后的目录写入文件Directory.txt。我一直在尝试创建一个方法,该方法应该从数组中删除一个元素,并将下面的所有元素向下移动一个位置。这是我为这个类编写的完整代码,似乎工作不正常的方法是delete(): 打包作业; 导入java.util.*; 导入java.io.*; 公共类目录{ //最大目录大小=102

坦率地说,我正在创建一个名为“Directory”的类,该类处理/提供目录操作,例如读取目录数据,以独立于大小写的方式检查目录中是否存在名称,向目录添加名称,从目录中删除名称,并将更新后的目录写入文件Directory.txt。我一直在尝试创建一个方法,该方法应该从数组中删除一个元素,并将下面的所有元素向下移动一个位置。这是我为这个类编写的完整代码,似乎工作不正常的方法是delete():

打包作业;
导入java.util.*;
导入java.io.*;
公共类目录{
//最大目录大小=1024
最终整数maxDirectorySize=1024;
字符串目录[]=新字符串[maxDirectorySize];
int directorySize=0;
文件目录File=null;
Scanner directoryDataIn=null;
//建造师
目录(字符串directoryFileName){
directoryFile=新文件(directoryFileName);
试一试{
directoryDataIn=新扫描仪(directoryFile);
}
catch(filenotfounde异常){
System.out.printf(“未找到文件%s,正在退出!”,directoryFileName);
系统出口(0);
}
//加载目录
while(directoryDataIn.hasNext()){
目录[directorySize++]=directoryDataIn.nextLine();
}
}
公共布尔索引目录(字符串名称){

对于(inti=0;i,下面的代码片段看起来有点奇怪

 for(int c = i; c<directorySize+1; c++){
     directory[c] = directory[c++];
 }


你的循环条件:
cha你试过调试吗?如果你试过,你会看到
c
变量会在移位循环中意外地增加,如果你想一想,你就会知道原因。我已经多次检查数组目录包含的内容。当我使用delete方法时,数组甚至没有改变。Quick问题;
i++;
行位于for循环的末尾而不是其声明中有什么特别的原因吗?没有,我只是在测试它是否有任何不同。我最后删除了它,并将其放回for循环声明中以避免混淆。我不明白,您正在使用的代码块告诉我重试仍然会使c比你说的增加两倍。我看到的唯一变化是for循环的第二个参数。@abdi它在forloop的内容中。我使用的是
目录[c+1]
而不是
目录[c++]这个问题有点固定,我没有意识到用C++代替C++ 1会永久地增加变量。数组看起来好像是“向下移动”。,但现在,最后一个元素重复了两次,使最后两个元素重复。我必须修改第二个参数才能更正此问题吗?@abdi我猜数组的最后一个元素上面没有任何其他移动。@abdi你应该有能力自己解决这个问题。这是你的职责毕竟家庭作业
 for(int c = i; c<directorySize+1; c++){
     directory[c] = directory[c++];
 }
directory[c] = directory[c+1];