在整个代码中初始化变量和/或更新值的小问题

时间:2019-02-08 01:52:23

标签: java

我以前有一个功能版本,该功能版本使用的唯一变量较少,而第一个变量仅使用了更多实例,但是在又添加了两个与第一个变量相关的变量后,我的代码出现错误,表明我需要初始化我的变量“ numbList”。

理想情况下,我想在每个新行之后简单地更新“ numbList”的值,然后将更新“ numbSquare”和“ numbCube”的值。到目前为止,我运气还不太好。

public class Assignment2BPart2 {
    public static void main(String[] args) {
        int numbList;
        int numbSquare;
        int numbCube;

        numbSquare = numbList * numbList;
        numbCube = numbSquare * numbList;

        System.out.println("The following is a table of values, showing numbers 0 - 10 and their squares and cubes.");
        System.out.printf("%s%s%s%n", "Number   ", "Square  ", "Cube");
        System.out.printf("%d \t %d \t %d%n", numbList = 0, numbSquare, numbCube);
        System.out.printf("%d \t %d \t %d%n", numbList = 1, numbSquare, numbCube);
        System.out.printf("%d \t %d \t %d%n", numbList = 2, numbSquare, numbCube);
        System.out.printf("%d \t %d \t %d%n", numbList = 3, numbSquare, numbCube);
        System.out.printf("%d \t %d \t %d%n", numbList = 4, numbSquare, numbCube);
        System.out.printf("%d \t %d \t %d%n", numbList = 5, numbSquare, numbCube);
        System.out.printf("%d \t %d \t %d%n", numbList = 6, numbSquare, numbCube);
        System.out.printf("%d \t %d \t %d%n", numbList = 7, numbSquare, numbCube);
        System.out.printf("%d \t %d \t %d%n", numbList = 8, numbSquare, numbCube);
        System.out.printf("%d \t %d \t %d%n", numbList = 9, numbSquare, numbCube);
        System.out.printf("%d \t %d \t %d%n", numbList = 10, numbSquare, numbCube);       
    }
}

预期结果将是一个3列的表,其标题为

  

数字平方立方体

第1列的其余值为0-10,第2列为这些数字的平方,第3列为数字的立方。

到目前为止,我无法在此迭代中运行代码。

4 个答案:

答案 0 :(得分:1)

逻辑是错误的,您必须在更新numbList之后计算平方和立方,因此您必须使用任何循环或递归来执行此操作,但是我宁愿使用两种方法返回int值一个用于计算平方,另一个用于计算立方体

public class NewMain {

public static void main(String[] args) {
    int numbList = 0;


    System.out.println("The following is a table of values, showing numbers 0 - 10 and their squares and cubes.");

    System.out.printf("%s%s%s%n", "Number   ", "Square  ", "Cube");

    //
    System.out.printf("%d \t %d \t %d%n", numbList = 0, squareOfNumber(numbList), cubeOfNumber(numbList));
    System.out.printf("%d \t %d \t %d%n", numbList = 1, squareOfNumber(numbList), cubeOfNumber(numbList));
    System.out.printf("%d \t %d \t %d%n", numbList = 2, squareOfNumber(numbList), cubeOfNumber(numbList));
    System.out.printf("%d \t %d \t %d%n", numbList = 3, squareOfNumber(numbList), cubeOfNumber(numbList));
    System.out.printf("%d \t %d \t %d%n", numbList = 4, squareOfNumber(numbList), cubeOfNumber(numbList));
    System.out.printf("%d \t %d \t %d%n", numbList = 5, squareOfNumber(numbList), cubeOfNumber(numbList));
    System.out.printf("%d \t %d \t %d%n", numbList = 6, squareOfNumber(numbList), cubeOfNumber(numbList));
    System.out.printf("%d \t %d \t %d%n", numbList = 7, squareOfNumber(numbList), cubeOfNumber(numbList));
    System.out.printf("%d \t %d \t %d%n", numbList = 8, squareOfNumber(numbList), cubeOfNumber(numbList));
    System.out.printf("%d \t %d \t %d%n", numbList = 9, squareOfNumber(numbList), cubeOfNumber(numbList));
    System.out.printf("%d \t %d \t %d%n", numbList = 10, squareOfNumber(numbList), cubeOfNumber(numbList));
}

public static int squareOfNumber(int num) {
    return num*num;
}
public static int cubeOfNumber(int num) {
    return num*num*num;
  }
}

用于循环,您可以在上面应用相同的逻辑

for(int i=0; i<=10; i++) {
        System.out.printf("%d \t %d \t %d%n", i, i*i, i*i*i);
    }

您也可以使用Math.pow()

nt intResult = (int) Math.pow(2, 3);
  

该方法将2乘以3的幂并返回结果

答案 1 :(得分:1)

您正在寻找的解决方案是如何使代码和变量可重用。实现此功能的一种方法是使用函数,尽管您可能还不了解这一点。然后,您可以使用for循环在函数中输入数字1到10,以获得所需的输出。

 public static int NumberSquared(int number)
 {
    return number*number;
 }

 public static int NumberCubed(int number)
 {
    return number*number*number;
 }

 public static void main(String[] args) 
 {

    for(int i=0; i <= 10; i++)
    {
        System.out.println("Number " + i + " Square: " + NumberSquared(i) + " Cube: " + NumberCubed(i));
    }
 }

答案 2 :(得分:1)

达到类似目的的通常方法是使用for loop

System.out.println("The following is a table of values, showing numbers 0 - 10 and their squares and cubes.");
System.out.printf("%s%s%s%n", "Number   ", "Square  ", "Cube");

for (int num = 0; num <= 10; num++) {
    System.out.printf("%d \t %d \t %d%n", num, num * num, num * num * num);
}

答案 3 :(得分:0)

基本问题是计算平方和立方的语句。那时,您要计算的平方/立方值的数字尚未初始化。

现在,您可以直接在Sys.Outs中相乘以分别计算平方和立方。一旦了解了循环和递归是什么,代码行将大大减少。