编程错误“XXX已在main(String [])中定义”

时间:2011-12-10 05:46:23

标签: java arrays

我的任务是写一个程序来执行以下操作:

要求用户输入一个正整数n,从2到100 声明3个名为x,xsquared,xcubed的数组,其中每个数组最多可存储101个值。

  • 在数组x中,将i的值从1到n保存在单元格i中。
  • 在数组xsquared中,将i ^ 2的值从1到n存储在单元格i中从1到n。
  • 在数组xcubed中,将i ^ 3的值从1到n保存在单元格i中从1到n。

然后使用“for”循环计算前n个整数,n个平方整数和n个立方整数的和。

EG:如果用户输入n = 5,那么1 + 2 + 3 + 4 + 5 = 15; 1 + 4 + 9 + 16 + 25 = 55;
                1 + 8 + 27 + 64 + 125 = 225

最后,验证对于给定的n值,(n ^ 2 + n + 1)(n - 1)= n ^ 3 - 1

在我的程序中,我似乎收到错误说明

i is already defined in main(String[])

我的程序似乎没有任何总结或任何方格。为什么呢?

import java.util.Scanner;

public class ArraySquareCube
{
  public static void main(String[] args)
  {
    double[] numbers = new double[101];
    double sum = 0;

    System.out.println("Enter a number from 0 through 100");
    Scanner in = new Scanner(System.in);
    int i = in.nextInt();

    for (int i : numbers)
    {
      sum = sum + i;
    }

    for (int i = 0; i < numbers.length; i++)
    {
      numbers[i] = i*i;
    }
  }
}

5 个答案:

答案 0 :(得分:2)

您是否阅读过该错误?

for (int i : numbers)

此时,i已定义main(String[])。它的定义如下:

int i = in.nextInt();

如果您可以编译程序,@ shantha指出您在将数字从0初始化为100之前对数字进行求和。

请注意0 * 0 = 00 + x = x,因此作为次要优化,您可以跳过0并为自己保存double,并且new double[101]来电会稍微好一些神奇的数字。

答案 1 :(得分:2)

错误是由于重新定义了这些int i循环中的for。我想指出在解决主要问题后你的结果为零的问题。

当你对

中定义的双数组求和时,总和为零
double[] numbers = new double[101];

这是因为默认情况下原始类型double被初始化为零。如果打印数组numbers中的每个元素值,则每个元素值应为零。

默认情况下,您引用数字[i]的元素初始化为零。

所以在代码中

for (int i : numbers)

对于i数组中的每个项,numbers此处为零。 (因为每个double原语初始化默认为零)

如果使用非默认值或零值正确初始化numbers数组,则可以看到数组元素的总和。

编辑:如果您相互更改for循环的位置,则总和应该有效。 喜欢:

for (int i = 0; i < numbers.length; i++)
{
   numbers[i] = i*i;
}

for (int i : numbers)
{
    sum = sum + i;
}

答案 2 :(得分:0)

你尝试在for-each循环和通常的for循环中使用i,但它已在

中定义

int i = in.nextInt();

所以编译器争辩说。

答案 3 :(得分:0)

import java.util.Scanner;

public class ArraySquareCube {
public static void main(String[] args){
    double[] numbers = new double[101];
    double sum = 0;
    System.out.println("Enter a number from 0 through 100");
    Scanner in = new Scanner(System.in);
    int i = in.nextInt();
    for (int j = 0; j <= i; j++){
      sum = sum + j;
    }
    for (int c = 0; c < numbers.length; c++){
      numbers[c] = c*c;
    }
  }
}

我相信你正在寻找的东西。

答案 4 :(得分:0)

  1. 编译时,有两个错误。首先是

    for(int i : numbers)
    
    ...
    
    for(int i = 0; ...)
    

    表示重复的变量“i”。

    其次是

    for(int i : numbers)
    

    而“numbers”是double的数组,“i”是int,表示类型不匹配。

    所以代码甚至无法编译。

  2. 2.您需要声明3个数组。所以只要声明它们。我只在你的代码中看到一个数组。

    3.使用用户输入的整数。使用另一个计数器来帮助计算,而不是“我”本身。

    自己尝试一下,如果遇到其他问题,请回来。

    PS:我建议你使用一个好的IDE,比如Eclipse。它会在编辑时指示您出现此类错误。

相关问题