添加通过用户输入决定的数组元素
Adding elements of an array that was decided through user input
我正在尝试将所有元素添加到一个由用户输入决定的数组中,每次我 运行 我在下面构建的代码中得到的数字显然不是元素的总和。我做错了什么?
import java.util.Scanner;
public class SumProduct
{
public static void main (String []args)
{
Scanner input = new Scanner (System.in);
int[] array1 = new int [input.nextInt()];
input = scan.nextInt();
for (int i = 0; i < array1.length; i++)
{
array1[i] = input.nextInt();
}
for (int i = 0; i < array1.length; i++)
{
int j = array1[i];
int k = array1[i]+1;
int sum = j + k;
System.out.print(sum);
}
}
}
如果您要执行此操作,您可能希望提示用户输入数组的大小 this.This 代码行允许用户输入的任何内容都是数组的大小。
int[] array1 = new int [input.nextInt()]; //this sets the size of the array through user input
当前上下文中不存在扫描:
input = scan.nextInt(); // this is invalid syntax as scan is not the Scanner you created
for (int i = 0; i < array1.length; i++)
{
array1[i] = input.nextInt();
}
我会这样做以继续向数组添加元素:
// no need for this: input = scan.nextInt();
for (int i = 0; i < array1.length; i++)
{
System.out.println("Enter integer to add:");
array1[i] = input.nextInt();
}
如果您一次只添加一个元素而不是两个元素,此代码将为您提供元素的总和:
int sum = 0;
for (int i = 0; i < array1.length; i++)
{
sum += array1[i];
System.out.print(sum); // this will print out sum after each addition
}
System.out.print(sum); // this will print out sum after the entire array is summed
添加一些逻辑以仅允许用户向数组输入这么多数字也会有帮助。您将需要在某个时候将数据输入数组中。然后还记得在完成从用户那里获取数据后关闭扫描器:
input.close();
您的问题出在以下代码行中:
for (int i = 0; i < array1.length; i++)
{
int j = array1[i];
int k = array1[i]+1;
int sum = j + k;
System.out.print(sum);
}
它应该看起来像
int sum = 0;
for (int i = 0; i < array1.length; i++)
{
sum = sum + array1[i];
}
System.out.print(sum);
第一个变化是在循环外声明变量"sum"。按照它的编写方式,它会在每次循环迭代中被声明,然后消失,然后声明,然后消失。您可能还想将其初始化为 0
第二个变化是求和逻辑。让我们假设您的数组包含三个数字 [1, 2, 3] 并遍历您的逻辑。
j = array1[0] //(j == 1)
k = array1[0] + 1 //(k == 1 + 1 == 2)
sum = j + k //(sum == 1 + 2 == 3)
然后像我之前提到的那样丢弃变量 "sum",并在第二个数组元素上以相同的逻辑重新开始,然后在第三个元素上再次开始。
即 j = 2, k = 2+1, sum = 2 + 2 + 1. 其次是 j = 3, k = 3 + 1, sum = 3 + 3 + 1.
您可能会发现这不是总和,并导致您在本例中记录了三位数字 3、5 和 7。
在我更新的逻辑中,我们简单地遍历每个元素并将其添加到当前 运行 总数。
希望这对您有所帮助
我正在尝试将所有元素添加到一个由用户输入决定的数组中,每次我 运行 我在下面构建的代码中得到的数字显然不是元素的总和。我做错了什么?
import java.util.Scanner;
public class SumProduct
{
public static void main (String []args)
{
Scanner input = new Scanner (System.in);
int[] array1 = new int [input.nextInt()];
input = scan.nextInt();
for (int i = 0; i < array1.length; i++)
{
array1[i] = input.nextInt();
}
for (int i = 0; i < array1.length; i++)
{
int j = array1[i];
int k = array1[i]+1;
int sum = j + k;
System.out.print(sum);
}
}
}
如果您要执行此操作,您可能希望提示用户输入数组的大小 this.This 代码行允许用户输入的任何内容都是数组的大小。
int[] array1 = new int [input.nextInt()]; //this sets the size of the array through user input
当前上下文中不存在扫描:
input = scan.nextInt(); // this is invalid syntax as scan is not the Scanner you created
for (int i = 0; i < array1.length; i++)
{
array1[i] = input.nextInt();
}
我会这样做以继续向数组添加元素:
// no need for this: input = scan.nextInt();
for (int i = 0; i < array1.length; i++)
{
System.out.println("Enter integer to add:");
array1[i] = input.nextInt();
}
如果您一次只添加一个元素而不是两个元素,此代码将为您提供元素的总和:
int sum = 0;
for (int i = 0; i < array1.length; i++)
{
sum += array1[i];
System.out.print(sum); // this will print out sum after each addition
}
System.out.print(sum); // this will print out sum after the entire array is summed
添加一些逻辑以仅允许用户向数组输入这么多数字也会有帮助。您将需要在某个时候将数据输入数组中。然后还记得在完成从用户那里获取数据后关闭扫描器:
input.close();
您的问题出在以下代码行中:
for (int i = 0; i < array1.length; i++)
{
int j = array1[i];
int k = array1[i]+1;
int sum = j + k;
System.out.print(sum);
}
它应该看起来像
int sum = 0;
for (int i = 0; i < array1.length; i++)
{
sum = sum + array1[i];
}
System.out.print(sum);
第一个变化是在循环外声明变量"sum"。按照它的编写方式,它会在每次循环迭代中被声明,然后消失,然后声明,然后消失。您可能还想将其初始化为 0
第二个变化是求和逻辑。让我们假设您的数组包含三个数字 [1, 2, 3] 并遍历您的逻辑。
j = array1[0] //(j == 1)
k = array1[0] + 1 //(k == 1 + 1 == 2)
sum = j + k //(sum == 1 + 2 == 3)
然后像我之前提到的那样丢弃变量 "sum",并在第二个数组元素上以相同的逻辑重新开始,然后在第三个元素上再次开始。
即 j = 2, k = 2+1, sum = 2 + 2 + 1. 其次是 j = 3, k = 3 + 1, sum = 3 + 3 + 1.
您可能会发现这不是总和,并导致您在本例中记录了三位数字 3、5 和 7。 在我更新的逻辑中,我们简单地遍历每个元素并将其添加到当前 运行 总数。
希望这对您有所帮助