2016-07-10 135 views
1

这里是一个非常简单的java程序,我声明任何数组有7个元素,输入前六个,移动第四到第六个元素到第五到第七个位置,并获得第四个空位:简单数组插入程序产生不正确的输出

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;
+1

*“第六和第七个位置是0 *”您期望*他们是什么?显示您的输入,输出和*期望*输出,并突出显示我们的差异。 –

回答

5

你最初的环没有任何分配到第7元,所以它仍然为0。

,以后你的第七元素复制到一个6

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

所以无论是第6和第七元素应该是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); 
    } 
+0

嗯,对编辑感到抱歉。 –

+0

@PeterLawrey没问题:) – Eran

+0

啊,好的,但我不能使用.length(),那么我会如何解决它呢? –

0

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

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

尝试过,但它仍然使第七个位置的值为0. –

+0

只有当您输入第6个值0时才会发生,然后只有第7个值将为0,因为我们直接在第7个值中复制第6个值。再检查一遍。 – VatsalSura

相关问题