1维数组,倍数为5.坚持几个。编码新手

时间:2015-10-07 13:47:51

标签: java arrays for-loop

这是作业:

  

编写一个程序,在名为Data的数组中分配和存储前20个5的倍数,程序中不能使用其他数组。程序应输出数组的元素,具体如下:

a)仅编写用于在Data

中分配和存储值的命令

b)输出数组:10个数字/行,每行的总和

c)输出数组:按相反的顺序,5个数字/行,每行的总和

d)奇数索引位置值(Data [1],Data [3],Data [5],...),5个值/行及其总和

e)偶数索引位置值(Data [3],Data [4],Data [6],...),5个值/行及其总和

这是我的代码:

   //** TASK 4

 //a,b
int data[]=new int[21]; int sum=0;
    for(int i=1;i<21;i++){
        data[i]=5*i;
        sum+= data[i];
        if(i%11==0)
            System.out.println();
        System.out.print(data[i] + " ");

    }
    System.out.println("sum " + sum);


//  int a[]=new int[21];
  //    for(int i=1;i<21;i++){
  //     a[i]=5*i;
  //    //System.out.print(a[i] + " ");
  //            }
  //        System.out.println();
    System.out.println();
    //c
    int sum2=0;
    for(int i=data.length-2;i>0;i--){
        data[i]+=5;
        sum2+= data[i];
        if(i%5==0)
            System.out.println();
        System.out.print(data[i] + " ");
   }
    System.out.println("sum " + sum2);

    System.out.println();

    //d
   int sum3=0;
   for(int i=1;i<21;i=i+2){
           data[i]=5*i;
           sum3+= data[i];
           if(i%11==0)
            System.out.println();
        System.out.print(data[i] + " ");
    }
    System.out.println("sum " + sum3);
    System.out.println();

   //e
    int sum4=0;
    for(int i=2;i<21;i=i+2){
        data[i]=5*i;
        sum4+= data[i];
        if(i%5==0)
            System.out.println();
        System.out.print(data[i] + " ");
    }
    System.out.println("sum " + sum4);

这是输出: 对于a / b)

    5 10 15 20 25 30 35 40 45 50 
    55 60 65 70 75 80 85 90 95 100 sum 1050
  • 我不知道如何分离我的a和b代码

对于c)

    100 95 90 85 
    80 75 70 65 60 
    55 50 45 40 35 
    30 25 20 15 10 sum 1045
  • 对于c我在第一行得到4个数字,我不知道为什么

对于d)

    5 15 25 35 45 
    55 65 75 85 95 sum 500
  • 我有这个权利

对于e)

   10 20 30 40 
   50 60 70 80 90 
   100 sum 550
  • 这不是让我每行有5个数字

***我不知道如何为这项任务的所有部分加上每一行的总和。 我的老师没有教我们如何,不会帮助我,我很困惑。请帮忙。我一直试图弄清楚这么久

  • 他希望它从5开始而不是0

2 个答案:

答案 0 :(得分:0)

我在这里没有给出答案,作为家庭作业,我相信这个过程比结果更重要。但是,我会尽力指导。

我注意到的第一件事是StringBuilder类在这里非常有用。

正如@Filburt所指出的那样:尝试一次完成这一部分。

从a开始:尝试习惯第一个索引为0的事实,然后迭代20个元素并使其值达到您想要的值:(i+1)*5

b:这里模数和StringBuilder派上用场。您要做的就是迭代所有data[i]然后将data[i] + " "附加到字符串构建器,同时设置值的运行总和。

由于您希望每10个条目添加总和和新行,因此有用的事情是20个值的i%100, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

因此,当您到达第10个元素9时,您希望将总和添加到StringBuilder并在窗口上添加新行字符"\r\n""\n" Unix / MacOSX)并将总和设置回0。

最后你可以简单地打印stringbuilder并瞧!

c:与前一个相同,实际上,只是向后迭代,模数为5 4, 3, 2, 1, 0, ...(意味着你将总和加在0上)。

d&amp; e:这实际上与b相同,但只打印其他所有条目,其中i%2 == 1i%2 == 0按此顺序排列。所以,只要确保只在这是真的时附加到stringbuilder并且一切都应该没问题。

希望这有助于而不是太明显。

答案 1 :(得分:0)

我不知道我是否应该发布此信息,但无论如何你都去了:

...
ConstantPool:
  #7 = Utf8               LFactoryMethodKeys
  #8 = Utf8               NonFactoryMethod
...
{
  public abstract FactoryMethodKeys value();
    flags: ACC_PUBLIC, ACC_ABSTRACT
    AnnotationDefault:
      default_value: e#7.#8}

我认为这就是你所需要的。