回 帖 发 新 帖 刷新版面

主题:請問一下下面哪邊錯了

在執行地方輸入
+ 1 2 3他會做1+2+3
- 1 2 3他會做1-2-3
* 1 2 3他會做1*2*3
/ 1 2 3他會做1/2/3
而他卻一直跟我說區域變數flag沒有定義,為甚麼阿,if else if那邊不是有定義初始值嗎

public class b {

        /**
         * @param args
         */
        public static void main(String[] args) {
                int i, size = args.length;
                
                int sum = Integer.parseInt(args[1]); 
                int flag;
                if(args[0] == "+")
                        flag = 0;
                else if(args[0] == "-")
                        flag = 1;
                else if(args[0] == "*")
                        flag = 2;
                else if(args[0] == "/")
                        flag = 3;

                switch(flag)
                {
                        
                
                        case 0:
                            
                            for(i = 2; i < size; i++)
                                sum += Integer.parseInt(args[i]);
                                
                                break;
                        case 1:
                            
                            for(i = 2; i < size; i++)
                                sum -= Integer.parseInt(args[i]);
                            
                            break;
                        case 2:
                            
                            for(i = 2; i < size; i++)
                                sum *= Integer.parseInt(args[i]);
                            
                            break;
                        case 3:
                            
                            for(i = 2; i < size; i++)
                                sum /= Integer.parseInt(args[i]);
                            
                            break;
                }
                
                for(i = 1; i < size; i++)
                {
                    System.out.print(args[i]);
                    if(i == (size -1))
                    {
                        System.out.print("=");
                        System.out.print(sum);
                        break;
                    }
                    System.out.print(args[0]);
                }
        }
}

回复列表 (共2个回复)

沙发

if(args[0] == "+")
                        flag = 0;
                else if(args[0] == "-")
                        flag = 1;
                else if(args[0] == "*")
                        flag = 2;
                else if(args[0] == "/")
                        flag = 3;
以上代码缺少一个else语句。
本人将你的代码段作出修改如下:

int sum,flag;
while(true)
{
  sum = Integer.parseInt(args[1]); 
  if(args[0] == "+")
      {
          flag = 0;
          break;
     }
   else if(args[0] == "-")
    {
         flag = 1;
        break;
    }
    else if(args[0] == "*")
       {
         flag = 2;
          break;
       }
      else if(args[0] == "/")
         {
           flag = 3;
           break;
         }
   else continue;

}

板凳

没有对非法的arg[0]判断,如果用户输入不对即args[0]不是你要的+ - * /,flag就会出现没有赋值。

在if语句中加个else对非法的进行判断并给flag一个值表示输入错误。

我来回复

您尚未登录,请登录后再回复。点此登录或注册