2 zf934591037 zf934591037 于 2017.07.17 00:03 提问

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

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
strutce   Ds   Rxr 2017.07.17 09:12
已采纳

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

SonOfWind0311
SonOfWind0311   2017.07.17 08:51

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

zy841958835
zy841958835   2017.07.17 08:58

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

谢谢

xingfu_xiaoguai
xingfu_xiaoguai   2017.07.17 09:31

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

zf934591037
zf934591037 第二个问题其实我就是这样用的n=3我用的是n>2 || n<4,但是不知道怎么复制过来的时候不见了
7 天之前 回复
weixin_38023507
weixin_38023507   2017.07.17 09:58

第一个问题解决了的话第二个问题就应该不会出现了,都用==,第三个问题可以把代码写在一个死循环里面,每次算完一轮可以加个提示比如输入#结束,然后判断输入是否等于#,等于#就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)
{
.....
}
...

pandahii
pandahii   2017.07.17 11:20

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

zoujian1993
zoujian1993   2017.07.17 10:36

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

zf934591037
zf934591037 哈哈,我才学了几天,还没学到那里呢,只是觉得计算机这个功能比较好玩,然后自己试着摸索做出来,在问题中学习
7 天之前 回复
pandahii
pandahii   2017.07.17 11:19

你需要一本书,叫

zf934591037
zf934591037   2017.07.17 21:04

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

Csdn user default icon
上传中...
上传图片
插入图片