创建一个 for 循环以将先前的值加倍
Creating a for loop to double the previous value
我目前正在学习 Java,我有一个作业要求我编写一个 for 循环。我需要创建一个允许用户输入的小程序,然后使用 for 循环放置一条消息,告诉用户他们的信息。我需要 for 循环来允许,总结用户放置的天数和他们每天的粮食,我还需要每天获得双倍的粮食。
示例:
第 1 天你得到 1 粒米,总共 1 粒
第 2 天你得到 2 粒米,总共 3 粒米
第 3 天你得到 4 粒米,总共 7 粒米
第 4 天你得到 8 粒米,总共 15 粒
第 X 天,您获得了 X 粒米,共计 Y 粒
我不太确定如何设置我的 for 循环来执行此操作。这是我目前所拥有的。
public static void GrainCounter()
{
Scanner s = new Scanner(System.in);
System.out.println("How many days worth of grain do you have?");
int days = s.nextInt();
int sum = 0;
for (int i = 0; i <= days; i++)
{
sum = sum + i;
}
System.out.print("Day " + days + " you got " + sum + " grains of rice");
}
其实公式是,
Day X you get 2**X grains of rice for a total of Y grains
你的 sum
应该从 1
开始,你应该把你的 print
放在 循环中(你还想打印 i
一天)。像,
System.out.println("Day 1 you get 1 grain of rice for a total of 1 grain");
int sum = 1;
for (int i = 1; i <= days; i++)
{
sum += Math.pow(2, i);
System.out.println("Day " + (i + 1) + " you got " + (int)Math.pow(2,i) +
" grains of rice for a total of " + sum + " grains");
}
您也可以将 println
写成
System.out.printf("Day %d you got %d grains of rice for a total of %d grains%n",
i + 1, (int) Math.pow(2, i), sum);
你所要做的就是用 1
初始化 rice
并在 for
循环中继续将它添加到自身,直到你的循环迭代器 int i
到达天数 - 1(因为你用 1 初始化,所以没有额外的迭代)
public static int doubleDays(int days) {
int rice = 1;
for (int i = 0; i < days - 1; i++) {
rice += rice;
}
return rice;
}
试试这个:
import java.util.Scanner;
public class GrainCounter{
public static void main(String[] agrs){
Scanner in = new Scanner(System.in);
System.out.println("How Many Days Worth Of Grain Do You Have?");
int days = in.nextInt();
int sum =1, dailySum=1;
System.out.println("Day 1 you get 1 grain of rice for a total of 1 grain");
for (int i =1; i <days; i++){
dailySum*=2;
sum +=dailySum;
System.out.print("Day "+ (i+1) + " you get " + dailySum
+ " grain of rice for a total of "
+ sum + " grain\n");
}
}
}
结果将持续 10 天:
How Many Days Worth Of Grain Do You Have?
10
Day 1 you get 1 grain of rice for a total of 1 grain
Day 2 you get 2 grain of rice for a total of 3 grain
Day 3 you get 4 grain of rice for a total of 7 grain
Day 4 you get 8 grain of rice for a total of 15 grain
Day 5 you get 16 grain of rice for a total of 31 grain
Day 6 you get 32 grain of rice for a total of 63 grain
Day 7 you get 64 grain of rice for a total of 127 grain
Day 8 you get 128 grain of rice for a total of 255 grain
Day 9 you get 256 grain of rice for a total of 511 grain
Day 10 you get 512 grain of rice for a total of 1023 grain
问题是你的代码试图使用天作为变量,但实际上你的变量实际上是前几天的收益。
public static void GrainCounter(){
Scanner s = new Scanner(System.in);
System.out.println("How many days worth of grain do you have?");
int days = s.nextInt();
int sum = 1;
previousDay = 1;
for (int i = 2; i <= days; i++){
sum += previousDay*2;
previousDay = previousDay*2;
}
System.out.print("Day " + days + " you got " + sum + " grains of rice");
}
我目前正在学习 Java,我有一个作业要求我编写一个 for 循环。我需要创建一个允许用户输入的小程序,然后使用 for 循环放置一条消息,告诉用户他们的信息。我需要 for 循环来允许,总结用户放置的天数和他们每天的粮食,我还需要每天获得双倍的粮食。
示例:
第 1 天你得到 1 粒米,总共 1 粒
第 2 天你得到 2 粒米,总共 3 粒米
第 3 天你得到 4 粒米,总共 7 粒米
第 4 天你得到 8 粒米,总共 15 粒
第 X 天,您获得了 X 粒米,共计 Y 粒
我不太确定如何设置我的 for 循环来执行此操作。这是我目前所拥有的。
public static void GrainCounter()
{
Scanner s = new Scanner(System.in);
System.out.println("How many days worth of grain do you have?");
int days = s.nextInt();
int sum = 0;
for (int i = 0; i <= days; i++)
{
sum = sum + i;
}
System.out.print("Day " + days + " you got " + sum + " grains of rice");
}
其实公式是,
Day X you get 2**X grains of rice for a total of Y grains
你的 sum
应该从 1
开始,你应该把你的 print
放在 循环中(你还想打印 i
一天)。像,
System.out.println("Day 1 you get 1 grain of rice for a total of 1 grain");
int sum = 1;
for (int i = 1; i <= days; i++)
{
sum += Math.pow(2, i);
System.out.println("Day " + (i + 1) + " you got " + (int)Math.pow(2,i) +
" grains of rice for a total of " + sum + " grains");
}
您也可以将 println
写成
System.out.printf("Day %d you got %d grains of rice for a total of %d grains%n",
i + 1, (int) Math.pow(2, i), sum);
你所要做的就是用 1
初始化 rice
并在 for
循环中继续将它添加到自身,直到你的循环迭代器 int i
到达天数 - 1(因为你用 1 初始化,所以没有额外的迭代)
public static int doubleDays(int days) {
int rice = 1;
for (int i = 0; i < days - 1; i++) {
rice += rice;
}
return rice;
}
试试这个:
import java.util.Scanner;
public class GrainCounter{
public static void main(String[] agrs){
Scanner in = new Scanner(System.in);
System.out.println("How Many Days Worth Of Grain Do You Have?");
int days = in.nextInt();
int sum =1, dailySum=1;
System.out.println("Day 1 you get 1 grain of rice for a total of 1 grain");
for (int i =1; i <days; i++){
dailySum*=2;
sum +=dailySum;
System.out.print("Day "+ (i+1) + " you get " + dailySum
+ " grain of rice for a total of "
+ sum + " grain\n");
}
}
}
结果将持续 10 天:
How Many Days Worth Of Grain Do You Have?
10
Day 1 you get 1 grain of rice for a total of 1 grain
Day 2 you get 2 grain of rice for a total of 3 grain
Day 3 you get 4 grain of rice for a total of 7 grain
Day 4 you get 8 grain of rice for a total of 15 grain
Day 5 you get 16 grain of rice for a total of 31 grain
Day 6 you get 32 grain of rice for a total of 63 grain
Day 7 you get 64 grain of rice for a total of 127 grain
Day 8 you get 128 grain of rice for a total of 255 grain
Day 9 you get 256 grain of rice for a total of 511 grain
Day 10 you get 512 grain of rice for a total of 1023 grain
问题是你的代码试图使用天作为变量,但实际上你的变量实际上是前几天的收益。
public static void GrainCounter(){
Scanner s = new Scanner(System.in);
System.out.println("How many days worth of grain do you have?");
int days = s.nextInt();
int sum = 1;
previousDay = 1;
for (int i = 2; i <= days; i++){
sum += previousDay*2;
previousDay = previousDay*2;
}
System.out.print("Day " + days + " you got " + sum + " grains of rice");
}