| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 532 人关注过本帖
标题:看一下
只看楼主 加入收藏
angelnana
Rank: 1
等 级:新手上路
帖 子:178
专家分:0
注 册:2007-8-13
收藏
 问题点数:0 回复次数:3 
看一下
谁帮我改一下,我想能做如“-5+7”的运算,然后还要能循环运算的,出来结果后能重新提示用户输入算式的:
package phrase1;
import java.io.*;
public class Stringcalcul {
public static void main(String args[])throws IOException{
String teststr;
BufferedReader buf;
String A="";
String B="";
float numA,numB,result;
System.out.print("please input:");
buf=new BufferedReader(new InputStreamReader(System.in));

teststr=buf.readLine();
char[] testchar=teststr.toCharArray();
//char[] oper={'+','-','*','/'};
for(int i=0;i<testchar.length;i++){
switch(testchar[i]){
case '+':
for(int j=0;j<i;j++){
Character a=new Character(testchar[j]);
A+=a.toString();
}
for(int j=i+1;j<testchar.length;j++){
Character b=new Character(testchar[j]);
B+=b.toString();
}
numA=Float.parseFloat(A);
numB=Float.parseFloat(B);
result=numA+numB;
System.out.println(teststr+"="+result);
break;
case '-':
for(int j=0;j<i;j++){
Character a=new Character(testchar[j]);
A+=a.toString();
}
for(int j=i+1;j<testchar.length;j++){
Character b=new Character(testchar[j]);
B+=b.toString();
}
numA=Float.parseFloat(A);
numB=Float.parseFloat(B);
result=numA-numB;
System.out.println(teststr+"="+result);
break;
case '*':
for(int j=0;j<i;j++){
Character a=new Character(testchar[j]);
A+=a.toString();
}
for(int j=i+1;j<testchar.length;j++){
Character b=new Character(testchar[j]);
B+=b.toString();
}
numA=Float.parseFloat(A);
numB=Float.parseFloat(B);
result=numA*numB;
System.out.println(teststr+"="+result);
break;
case '/':
for(int j=0;j<i;j++){
Character a=new Character(testchar[j]);
A+=a.toString();
}
for(int j=i+1;j<testchar.length;j++){
Character b=new Character(testchar[j]);
B+=b.toString();
}
numA=Float.parseFloat(A);
numB=Float.parseFloat(B);
if(numB==0){
System.out.println("the second num can't be 0");
}else{
result=numA/numB;
System.out.println(teststr+"="+result);
}
break;
}
}
}
}
搜索更多相关主题的帖子: package public import 家具 空间 
2007-08-13 13:56
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 

我觉得应该先判断一下第一个操作数的正负号情况,然后就好判断操作符和第二个操作数的情况了。


I'm here, as always...
2007-08-13 14:03
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 

而且每一个case都重复做了求操作数和进行运算的事情,这些都可以放在后面做的,你的switch只是用来求操作符的,建议换个思路,这样的思路如果遇到操作数有负数的情况不好办


I'm here, as always...
2007-08-13 14:15
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 

package src;

import java.io.*;
public class Stringcalcul {
public static void main(String args[])throws IOException{
String teststr;
BufferedReader buf;
String A="";
String B="";
String keep="";
boolean keepOn=true;
float numA,numB,result;
while(keepOn){
System.out.print("please input:");
buf=new BufferedReader(new InputStreamReader(System.in));

teststr=buf.readLine();
char[] testchar=teststr.toCharArray();
//char[] oper={'+','-','*','/'};
for(int i=0;i<testchar.length;i++){
switch(testchar[i]){
case '+':
for(int j=0;j<i;j++){
Character a=new Character(testchar[j]);
A+=a.toString();
}
for(int j=i+1;j<testchar.length;j++){
Character b=new Character(testchar[j]);
B+=b.toString();
}
numA=Float.parseFloat(A);
numB=Float.parseFloat(B);
result=numA+numB;
System.out.println(teststr+"="+result);
break;
case '-':
for(int j=0;j<i;j++){
Character a=new Character(testchar[j]);
A+=a.toString();
}
for(int j=i+1;j<testchar.length;j++){
Character b=new Character(testchar[j]);
B+=b.toString();
}
numA=Float.parseFloat(A);
numB=Float.parseFloat(B);
result=numA-numB;
System.out.println(teststr+"="+result);
break;
case '*':
for(int j=0;j<i;j++){
Character a=new Character(testchar[j]);
A+=a.toString();
}
for(int j=i+1;j<testchar.length;j++){
Character b=new Character(testchar[j]);
B+=b.toString();
}
numA=Float.parseFloat(A);
numB=Float.parseFloat(B);
result=numA*numB;
System.out.println(teststr+"="+result);
break;
case '/':
for(int j=0;j<i;j++){
Character a=new Character(testchar[j]);
A+=a.toString();
}
for(int j=i+1;j<testchar.length;j++){
Character b=new Character(testchar[j]);
B+=b.toString();
}
numA=Float.parseFloat(A);
numB=Float.parseFloat(B);
if(numB==0){
System.out.println("the second num can't be 0");
}else{
result=numA/numB;
System.out.println(teststr+"="+result);
}
break;
}
}
System.out.println("Continue?(y/n)");
keep=buf.readLine();
if(keep.equals("n")) keepOn=false;
}
}
}
红色字体部分是让该程序能够循环运行的,每执行好一次运算,会提示用户是否继续,输入y,继续,输入n,结束程序。


I'm here, as always...
2007-08-13 14:27
快速回复:看一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017083 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved