使用for循环在Array中存储双倍值?

时间:2016-02-25 05:19:36

标签: java arrays loops for-loop

/ * IMO我已经完成了大部分项目,但是我不能把我的思想包围在数组中。我应该为它分配值然后让它显示在屏幕上,因为它在程序运行时正在执行,但它不会通过数组。请帮助它让我疯狂。

分配:

对于此项目,您将创建一个程序,要求用户输入小于20的正整数值。请注意,程序只会从用户收集一个数字。所有其他号码将由该程序生成。

如果用户输入的数字大于20,则用户应该收到错误。

如果用户输入的数字等于或小于20,则显示每个值的两倍,从1开始直到所选数字(将每个数字乘以2),然后提供所有双打的总和。

例如,如果用户输入数字5,则应显示以下内容:

Double up 1 = 2

Double up 2 = 4

Double up 3 = 6

Double up 4 = 8

Double up 5 = 10

Total = 30

最低要求: •创建一个包含以下方法的单独类。注意:此类应该与包含main方法的公共类分开。 1.一种接受两个参数的方法:整数数组和整数变量。 1.整数变量应该保存用户提供的值。该数组将用于保存双倍结果。 2.此方法应执行计算,并将双倍结果存储在数组中。此外,所有double up值的总和应使用accumulator变量计算,该变量也是私有实例变量。 3.您必须确保调用方法获取对数组的更改。请记住,默认情况下,数组通过引用传递。此方法必须使用循环。

  1. 一个单独的方法,它将返回(不显示)存储在名为total。的私有实例变量中的值。
  2. •创建一个main方法,用于创建数组和整数变量,以及类的实例。然后,main方法应该使用实例来调用类的每个方法,传递所需的数据并处理任何返回数据。显示数组和总变量的全部内容。  * /

    import java.util.Scanner;
    public class project2 {
    
    public static void main(String args[]){
    
        scores output = new scores();
        output.enterNum();
        output.displayScores();
    
    }
    
    }
    class scores
    {
        int total;
        int stats[] = new int[20];
        int num1;
        void enterNum()
        {
    
            Scanner input = new Scanner(System.in);
            System.out.println("Enter a number between 1 and 20: ");
            num1 = input.nextInt();
    
            if(num1<=0 || num1>20)
            {
                System.out.println("You entered a wrong number. Try again.");
                System.out.println("");
                enterNum();
            }   
    
    
        }
        void displayScores()
        {
            int b=0;
            int val2=0;
            int total = 0;
    
    
            val2=num1*2;
    
    
            for(int i=1;b<val2;i++)
            {
    
    
                System.out.println(b=i*2);  
                total = total + b;
    
            // this part.   
            //  stats[i] = b;
            //  System.out.println(stats);
            }
    
            System.out.println(total);
    
        }   
    
    }
    

2 个答案:

答案 0 :(得分:0)

Maljam是对的,你的for循环是这里的问题。

你的for循环正在弄乱一些不需要在那里的int b。你想要的是在循环的每次迭代中将i*2添加到total。此外,您需要修改for-loop标头,以检查i而不是b。我不确定你要对阵列做什么。在这个项目中根本不需要它。

尝试将其更改为以下内容:

for (int i=1; i<=val1; i++){
    //stats[i] = i;
    System.out.println("Double up " + i + " = " + 2*i);
    total = total + 2*i; //or total += 2*i;
}
System.out.println("Total: " + total);

答案 1 :(得分:0)

public class scores {

int total;
int stats[];
int num1;

void enterNum() {

    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number between 1 and 20: ");
    num1 = input.nextInt();

    if (num1 <= 0 || num1 > 20) {
        System.out.println("You entered a wrong number. Try again.");
        System.out.println("");
        enterNum();
    }

}

void displayScores() {
    stats = new int[num1];
    int total = 0;

    for (int i = 0; i < num1; i++) {
        stats[i] = (i+1) * 2;
        total += stats[i];
    }

    for (int i = 0; i < num1; i++) {
        System.out.println((i+1) + " * 2 = " + stats[i]);
    }

    System.out.println("Total: " + total);

}
}
相关问题