【问题标题】:Simple Array Insertion Program Producing Incorrect Output产生错误输出的简单数组插入程序
【发布时间】:2016-11-12 12:38:47
【问题描述】:

下面是一个极其简单的java程序,我声明了任意7个元素的数组,输入前6个,将第4个到第6个元素移动到第5个到第7个位置,得到第4个空位置的值:

int A[]=new int[7];
        for(int i=0;i<6;i++)
        {
            System.out.println("Enter an integer");
            String a=Biff.readLine();
            A[i]=Integer.parseInt(a);
        }
        for(int i=4;i<6;i++)
        {
            A[i]=A[i+1];
        }
        System.out.println("Enter the integer to be inserted");
        String a=Biff.readLine();
        A[4]=Integer.parseInt(a);

但是,当所有的数组元素都打印出来的时候,第六位和第七位都是0,我也不知道为什么。原因和修复将不胜感激。 注意:我不能使用任何数组方法,必须保持非常简单。

  • 输入:1,2,3,4,5,6;然后 1;
  • 所需输出:1,2,3,4,5,1,6;
  • 实际输出:1,2,3,4,1,0,0;

【问题讨论】:

  • "第六和第七位是0" 你期望他们是什么?显示您的输入、输出和预期输出,并为我们突出显示差异。

标签: java arrays insertion


【解决方案1】:

您的初始循环没有为第 7 个元素分配任何内容,因此它保持为 0。

然后你将第 7 个元素复制到第 6 个元素

 A[i]=A[i+1];

所以第 6 个和第 7 个元素都应该是 0。

将循环更改为:

    for(int i=0;i<A.length;i++)
    { //         ^^^^^^^^^------------------------ change is here
        System.out.println("Enter an integer");
        String a=Biff.readLine();
        A[i]=Integer.parseInt(a);
    }

【讨论】:

  • @PeterLawrey 没问题 :)
  • 啊,好的,但是我不能使用 .length(),那我该如何解决呢?
  • @Aryanpoonacha 你总是可以用 7 代替长度,但长度更有意义。
【解决方案2】:

您以错误的方式移动值。使用此代码并理解您的错误:

for(int i=6;i>=3;i--)    //Moving the 4th to 6th elements to 5th to 7th elements
    {
        A[i]=A[i-1];
    }
String a=Biff.readLine();    //Taking input for 4th empty position
A[3]=Integer.parseInt(a);

我希望你的问题是正确的。

【讨论】:

  • 试过了,还是让第七个位置的值为0。
  • 只有当您输入第 6 个值 0 时才会发生这种情况,然后只有第 7 个值才会为 0,因为我们将第 6 个值直接复制到第 7 个值中。再次检查。
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多