有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java移动数组覆盖值

我的数组开头填充了一个字符串。然后用户可以输入一个新字符串。我希望我的数组向右移动,比如{a,x,x,x}应该将a向右移动{x,a,x,x},这样新条目就可以向上移动。当我运行代码时,它会将输入的字符串放在数组的第一个位置,但在下一步中,它不会移动输入的字符串,而是打印出一个只填充了预定义字符串的数组。为什么它不包含我输入的字符串

public static void main(String args[]) {

        int i;
        String n = new String("n");
        Scanner sc = new Scanner(System.in);
        String a;

        String affe [] = new String [5];
        Arrays.fill(affe, n);

        a = sc.next();

        affe[0] = a;

        System.out.println(Arrays.toString(affe));

        for(i = 0; i<affe.length-1; i++){
            affe[i] = affe[i+1];
        }
        System.out.println(Arrays.toString(affe));

    }

共 (2) 个答案

  1. # 1 楼答案

    试一试

    Collections.rotate(Arrays.asList(affe), 1);
    
  2. # 2 楼答案

    你抄错方向了

    更改此行:

    affe[i] = affe[i+1];
    

    affe[i+1] = affe[i];
    

    但您还需要更改循环的顺序,使其从后向前。否则,每个后续迭代都会从开始到结束带来一个值。因此,将循环更改为:

    for (int i = affe.length - 2; i >= 0; i ) {
        affe[i+1] = affe[i];
    }