zf934591037
zf934591037
采纳率100%
2017-07-16 16:03

java制作计算器功能遇到的问题

5
已采纳

import java.util.Scanner;

class demo2
{

public static void main(String[] args)

{

Scanner scanner = new Scanner(System.in);
System.out.println("请选择你要使用的计算器功能:");

System.out.println("1:加 2:减 3:乘 4:除 5:平方");
int n = scanner.nextInt();

/*1*/ if (n =1)
{
System.out.println("请输入第一个数据(必须遵循算数规则):");
long num1 = scanner.nextInt();

System.out.println("请输入第二个数据:");
long num2 = scanner.nextInt();
System.out.println("所得的结果为:"+(num1+num2));
return;
}
/*2*/ if (n>1 || n {
System.out.println("请输入第一个数据(必须遵循算数规则):");
long num1 = scanner.nextInt();
System.out.println("请输入第二个数据:");
long num2 = scanner.nextInt();
System.out.println("所得的结果为:"+(num1-num2));
return;
}
/*3*/ if (n>2 || n {
System.out.println("请输入第一个数据(必须遵循算数规则):");
long num1 = scanner.nextInt();
System.out.println("请输入第二个数据:");
long num2 = scanner.nextInt();
System.out.println("所得的结果为:"+(num1*num2));
return;
}
/*4*/ if (n>3 || n {
System.out.println("请输入第一个数据(必须遵循算数规则):");
long num1 = scanner.nextInt();
System.out.println("请输入第二个数据:");
long num2 = scanner.nextInt();
System.out.println("所得的结果为:"+(num1/num2));
return;
}
/*5*/ if (n>4)
{
System.out.println("请输入平方数据(必须遵循算数规则):");
long num1 = scanner.nextInt();

System.out.println("所得的结果为:"+(num1*num1));
return;
}

}

}

这是打算做一个计算器的功能,遇到了3个问题
1:通过输入数字选择计算器功能(1、加法  2、减法 。。。),我想用if(n=1),if(n=2) 这种的,但是报错:错误: 不兼容的类型: int无法转换为boolean
                                      /*1*/   if (n =1)
                                                     ^
                所以只能用了n<2表示n=1...                                   >
2:从选择乘法开始,也就是n=3(n>2 || n<4)时开始,计算的结果是减法,选择除法也是                                                                      >
3: 我想做到输入数据算出结果后,不是直接结束,而是跳转到最前面,继续重新选择计算器功能

求大神解惑,新学java,懂得很少,问题也比较多
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

9条回答

  • strutce 丵鹰 4年前

    第一个问题 :if使用的是判断符==而不是赋值符=
    第二个问题:你使用的短路或,意思是只要一个成功那么这个条件就是成功的,而非0数据n都是代表ture
    第三个问题:加死循环,在加break的判断标识,什么时候想退出,就执行break条件

    点赞 1 评论 复制链接分享
  • pandahii pandahii 4年前

    你需要一本书,叫《Java从入门到放弃》

    点赞 1 评论 复制链接分享
  • weixin_38023507 无敌好宝宝 4年前

    第一个问题解决了的话第二个问题就应该不会出现了,都用==,第三个问题可以把代码写在一个死循环里面,每次算完一轮可以加个提示比如输入#结束,然后判断输入是否等于#,等于#就break。
    另外觉得这个代码可以简化一下哦。1-4的输入语句都是一样的,所以应该可以做个判断
    ...

    if(n>=1&&n<=4){ //判断是否为1-4

    //这里都是一样的

    System.out.println("请输入第一个数据(必须遵循算数规则):");
    long num1 = scanner.nextInt();
    System.out.println("请输入第二个数据:");
    long num2 = scanner.nextInt(); 
    
    //然后再分情况输出结果
    if(n==1)
        //输出..
    

    }
    else if(n==5)
    {
    .....
    }
    ...

    点赞 1 评论 复制链接分享
  • xingfu_xiaoguai Adalia_hc 4年前

    第1、2个问题都可以归结为if判断符为问题,需要用==判断而不是赋值符=,知道了这个,第二个问题也就不需要用大于小于判断了;
    第2个问题,如果非要这么判断,应该用&&吧,即大于2又小于4的整数才是3啊;
    第3个问题:见楼上的回答;
    个人觉得可以试试switch-case的用法;

    点赞 1 评论 复制链接分享
  • zy841958835 cloudyzhao 4年前

    第一个问题:n=1 这句话的返回值是你也就是1 而n==1的返回值才是boolean型 你也可以使用 switch这种选择结构 记得不要忘记break
    第二个问题:因为你输入一个n>3的数 显然也大于2所以在上一个if就return了 不会执行n>3的语句
    第三个问题:你可以使用wile(true){你上面的代码块} 去掉里面的return 即可

    谢谢

    点赞 1 评论 复制链接分享
  • SonOfWind0311 SonOfWind0311 4年前

    判断是否等于1,不能用n=1,应该是n==1

    点赞 1 评论 复制链接分享
  • zf934591037 zf934591037 4年前

    悬赏有限,不能一一采纳,万分感谢各位大神抽空回答

    点赞 评论 复制链接分享
  • pandahii pandahii 4年前

    你需要一本书,叫

    点赞 评论 复制链接分享
  • zoujian1993 没伞的孩子只能跑 4年前

    兄弟,你这基础也是没谁了哈,“=”这个是赋值,“==”才是判断。至于想一直计算可以用while循环,写成死循环也不大好,你可以根据需要然条件不成立循环结束就好了。比如while(n!=-1),这样当你输入-1的时候就结束了

    点赞 评论 复制链接分享

相关推荐