之后如何使用if / else树中的变量值作为while循环的变量值

时间:2011-06-18 19:32:16

标签: java

这是我到目前为止编写的程序代码。它说我没有初始化答案。我想在执行if / else树之后使用answer的值将数字转换为星号。

import java.io.*;
import java.util.*;

public class Project5 {
    public static void main(String[] args){
        System.out.println("Please enter a formula of this form:operator,operand,operand(ex. add,2,2):");
        // wanted to change things but was not sure how far I was allowed to go so I used commas instead of spaces
        //was trying to split with a delimiter but kept getting an error [Ljava.lang.String;@55e83f9
        Scanner input = new Scanner(System.in);
        String formula = input.nextLine();
        System.out.println(formula);
        String oper = formula.substring(0,3);
        System.out.println(oper);
        String fnum = formula.substring(4,5);
        System.out.println(fnum);
        String snum = formula.substring(6,7);
        System.out.println(snum);
        double freal = Integer.parseInt(fnum);
        System.out.println(freal);
        double sreal = Integer.parseInt(snum);
        double answer;
        if (oper.equalsIgnoreCase("add") == true){
            answer = freal+sreal;
            System.out.println(answer);
        }
        else if(oper.equalsIgnoreCase("subtract") == true){
                 answer = freal-sreal;
            System.out.println(answer);
        }
        else if(oper.equalsIgnoreCase("multiply") == true){
                 answer = freal*sreal;
            System.out.println(answer);
        }
        else if(oper.equalsIgnoreCase("divide") == true){
                 answer = freal/sreal;
            System.out.println(answer);
        }
        else
            System.out.println("not valid.");

        while(answer > 0){
            System.out.print("*");
            answer--;
    }
}}

3 个答案:

答案 0 :(得分:2)

因为在最终的else分支中,您没有为answer分配值。如果那是执行的树,那么当你到达while循环时,它将是未定义的。您可以通过将answer初始化为某个值或确保if/else树的每个分支都为answer分配值来解决此问题。

修改要解决您的问题,请更改

double answer;

double answer = 0.0;

这将解决问题。

答案 1 :(得分:0)

你得到的错误的措辞是解决问题的良好开端:

  

Project5.java:41:变量答案可能尚未初始化

所以你应该初始化变量answer

修改:为了更加清晰,请将double answer;的行更改为double answer = 0.0;,从而初始化 answer变量。这就是编译器所抱怨的,并且是您需要进行的唯一更改,以便编译和执行代码。顺便说一句,在此之后你将有更多的错误要处理,因为虽然你允许操作符为3个字符,但在某些情况下,你试图将它与较长的单词进行比较。因此add有效,但subtract没有。

答案 2 :(得分:0)

我认为唯一的问题是你必须初始化答案:double answer = 0.0;