Java 改变数组中元素的位置
我不允许导入任何内容,因此不能使用java.util.arrays/import list 到目前为止,我得到了这个:Java 改变数组中元素的位置,java,Java,我不允许导入任何内容,因此不能使用java.util.arrays/import list 到目前为止,我得到了这个: public class MyArrayList { public String[] arrays; int counter = 0; public MyArrayList() { arrays = new String[5]; } public void add(String element) { if (counter >= arrays.len
public class MyArrayList {
public String[] arrays;
int counter = 0;
public MyArrayList() {
arrays = new String[5];
}
public void add(String element) {
if (counter >= arrays.length) {
String[] newarray = new String[arrays.length + 1];
for (int i = 0; i < arrays.length; i++) {
newarray[i] = arrays[i];
}
arrays = newarray;
}
arrays[counter] = element;
counter++;
}
public void set(String element, int position) { //This is the code that will change pos
element = arrays[arrays.length - 1];
for (int y = arrays.length - 1; y > position; y--)
arrays[y] = arrays[y - 1];
arrays[position] = element;
}
public class MyArrayListTest {
static MyArrayList zoo = new MyArrayList();
public static void printZoo() {
System.out.print("The zoo now holds " + zoo.size() + " animals: ");
for (int j = 0; j < zoo.size(); j++) System.out.print(zoo.get(j) + " ");
System.out.println();
}
public static void main(String[] args) {
System.out.println("Testing constructor, add(object) and size() ");
zoo.add("Ant");
zoo.add("Bison");
zoo.add("Camel");
zoo.add("Dog");
zoo.add("Elephant");
zoo.add("Frog");
zoo.add("Giraffe");
zoo.add("Horse");
printZoo();
zoo.set("Frog",0);
zoo.set("Camel",2);
zoo.set("Dog",4);
zoo.set("Elephant",6);
zoo.set("Giraffe",7);
zoo.set("Horse",5);
zoo.set("Ant",1);
zoo.set("Bison",3);
printZoo();
System.out.println();
公共类MyArrayList{
公共字符串[]数组;
int计数器=0;
公共MyArrayList(){
数组=新字符串[5];
}
公共void添加(字符串元素){
if(计数器>=arrays.length){
String[]newarray=新字符串[arrays.length+1];
for(int i=0;iposition;y--)
数组[y]=数组[y-1];
数组[位置]=元素;
}
公共类MyArrayListTest{
静态MyArrayList zoo=新的MyArrayList();
公共静态void printZoo(){
System.out.print(“动物园现在拥有”+zoo.size()+“动物:”);
对于(intj=0;j
所以我想做的是让set方法改变元素在
阵列
这就是打印出来的内容:
动物园现在有8种动物:蚂蚁野牛骆驼狗大象青蛙长颈鹿马
动物园现在有8种动物:马、大象、蚂蚁、长颈鹿、野牛、青蛙、狗、骆驼
所以位置确实会改变,但顺序不对
应该是:
动物园现在有8种动物:青蛙蚂蚁骆驼野牛狗马大象长颈鹿你为什么要重写set函数中元素的值?你没有保存所需属性值的变量。请再次查看你的代码
public void set(String element, int position) {
element = arrays[arrays.length - 1]; // at this point, you no longer
// know what the element was
//and now you shift the list by 1 element
for (int y = arrays.length - 1; y > position; y--)
arrays[y] = arrays[y - 1];
arrays[position] = element;
}
你只是在改变清单。
你可以试着这样做
public void set(String element, int position) {
String tmp = arrays[position];
arrays[position] = element;
...
... //here check if element you have set was already inside the array
... //if it isn't, increase array length and put tmp at the end
... //if it is, put tmp in old index of element
}
我的意思是,这只是一个简单的回答,没有考虑角落里的案例,但在我看来,你的想法有点不正确
好的,下面是您问题的完整解决方案:)
公共空集(字符串元素,int位置){
if(数组[位置].equals(元素))
回来
字符串tmp=数组[位置];
数组[位置]=元素;
for(int i=0;i
请对您的问题/任务,以及MCVE不起作用的原因,提供一个清晰、简洁、具体的描述。@QPaysTaxes已经提供,只需关注set
方法。@LuiggiMendoza显然不是。OP从不解释问题,如果只有一个相关部分,那么代码肯定不是MCVE。@QPaYstop非常明确:这是打印出来的内容:动物园现在有8种动物:蚂蚁野牛骆驼狗大象青蛙长颈鹿马动物园现在有8种动物:马大象蚂蚁长颈鹿野牛青蛙狗骆驼,问题是:位置确实改变,但顺序不对。所以,你只需阅读代码(是的,这是MCVE)看到它足够短,足以理解和复制问题。@LuiggiMendoza是的,我看到了。我没有看到正确的顺序应该是什么。
public void set(String element, int position) {
if (arrays[position].equals(element))
return;
String tmp = arrays[position];
arrays[position] = element;
for (int i = 0; i < arrays.length; i++) {
if (arrays[i].equals(element) && i != position) {
arrays[i] = tmp;
return;
}
}
add(tmp);
}