我的变量不会计算,因为编译器认为它们可能不会被生成

时间:2013-11-16 17:31:04

标签: java jgrasp

我正在做一个做罪,cos,tan功能的程序,而且正在进行中

但是,因为我使用了if-else语句,所以它认为我的变量(stepc)可能没有被初始化。 由于三角形图是重复的,我试图使所有图形在0到360的范围内。

import java.util.Scanner;

public class Trigonometry
{
    public static void main(String[]args)
    {
        double answer;
        double x;
        double stepa;
        double stepb;
        double stepc;
        double stepd;

        Scanner scanner = new Scanner (System.in);
        System.out.print("Enter number");  
        x = scanner.nextDouble(); 

        stepa = Math.abs(x);

        stepb = stepa / 360 ;

        if(stepb > 1)                   // <-- my functions for step c
        {
            while (stepb>1)
            {
                stepc = stepb - 1;
            }
        }
        else
        {
            stepc=stepb;
        }

        stepd=stepc*360;            // <--  won't consider step c 

        System.out.println( stepc );
    }
}
----jGRASP exec: javac -g Trigonometry.javaenter code here

Trigonometry.java:34: variable stepc might not have been initialized
stepd=stepc*360;
^
1 error

----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.

4 个答案:

答案 0 :(得分:0)

在定义stepc时将其初始化为某个默认值。

答案 1 :(得分:0)

您必须先为其指定一个值才能使用它。

答案 2 :(得分:0)

初始化时,您是否尝试过为步骤[abcd]变量赋值?

另外,如果stepb&gt; 1,您编写的代码永远不会终止。你知道为什么吗?

答案 3 :(得分:0)

正如其他人所说,使用:

    double answer;
    double x;
    double stepa;
    double stepb;
    double stepc = 0;
    double stepd;

编辑:将值分配给其他变量也没有坏处。

另外,请注意,此循环可能无限运行:

        while (stepb>1)
        {
            stepc = stepb - 1;
        }