java简单的四则运算.

请你编写程序实现能处理两个数的+、-、*、/、%的表达式程序。数据的输入/输出全部使用标准输入/输出,输入数据的第一行为你需要计算表达式的个数,从第2行开始,每一行为你计... 请你编写程序实现能处理两个数的+、-、*、/、%的表达式程序。数据的输入/输出全部使用标准输入/输出,输入数据的第一行为你需要计算表达式的个数,从第2行开始,每一行为你计算的一个表达式,每行数据中没有空格,除%运算外的输入数据皆为float数,除%运算结果为整数外,其他都保留两位小数,每个表达式的结果使用一行输出。
输入测试用例:
4
1+2
3.12*4
7%3
展开
 我来答
lulubleye
2013-12-27
知道答主
回答量:52
采纳率:0%
帮助的人:11.9万
展开全部

public class Arithmetic {

public static void Ari(){

Scanner scan = new Scanner(System.in);

StringBuffer buffer = new StringBuffer();

DecimalFormat dec = new DecimalFormat("0.00");//格式化结果保留两位小数

String all = "";//所有的计算表达式连在一起

System.out.println("请输入表达式的个数,只能为正整数");

int n = scan.nextInt();

System.out.println("请依次输入要计算的表达式");

   for(int i=0;i<n+1;i++){

    buffer = buffer.append(scan.nextLine()+",");

   }

   all = buffer.substring(0, buffer.lastIndexOf(","));

   String allAri[] = all.split(",");

   String ari = "";//不同的算法表达式

   float add;//加法的计算结果

   float subtract;//减肥的计算结果

   float multi;//乘法的计算结果

   float divison;//除法的计算结果

   int model;//模运算的计算结果

   for(int j=0;j<allAri.length;j++){

    ari = allAri[j];

    if(ari.contains("+")){

    String tempAry[] = ari.split("[+]");

    add = Float.valueOf(tempAry[0])+Float.valueOf(tempAry[1]);

    System.out.println(dec.format(add));

    }else if(ari.contains("-")){

    String tempAry[] = ari.split("[-]");

    subtract = Float.valueOf(tempAry[0])-Float.valueOf(tempAry[1]);

    System.out.println(dec.format(subtract));

    }else if(ari.contains("*")){

    String tempAry[] = ari.split("[*]");

    multi = Float.valueOf(tempAry[0])*Float.valueOf(tempAry[1]);

    System.out.println(dec.format(multi));

    }else if(ari.contains("/")){

    String tempAry[] = ari.split("[/]");

    divison = Float.valueOf(tempAry[0])/Float.valueOf(tempAry[1]);

    System.out.println(dec.format(divison));

    }else if(ari.contains("%")){

    String tempAry[] = ari.split("[%]");

    model = Integer.valueOf(tempAry[0])%Integer.valueOf(tempAry[1]);

    System.out.println(model);

    }

   }

}

public static void main(String[] args) {

Ari();

}

}

测试结果截图如下:

你的测试用例的输入的表达式的个数是4个,但下面的计算表达式好像少了一个,所以我加了一个除法的计算表达式,若理解有误,还望说明。

更多追问追答
追问
提交系统过不了,显示结果不正确,何解?
追答
不好意思,不太清楚你说的过不了啥意思,我这边运行的都是正确的,你那边是报错了还是怎么回事,能将代码贴出来看下嘛?
响亮的ITdog
2013-12-27 · TA获得超过167个赞
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:95.6万
展开全部
import java.util.*;
public class Test{
public static void main(String...args){
ArrayList<String> al=new ArrayList<String>();
System.out.println("请输入要计算的式子个数:");
Scanner sc=new Scanner(System.in);
int count=sc.nextInt();
System.out.println("请输入你要求解的式子:");
for(int i=0;i<count;i++){
sc=new Scanner(System.in);
al.add(sc.nextLine());
}
for(int i=0;i<count;i++){
System.out.print(al.get(i)+"=");
f(al.get(i));
}
}
public static void f(String s){
if(s.indexOf("+")>-1){
String[] str=s.split("[+]");
System.out.println(Double.parseDouble(str[0])+Double.parseDouble(str[1]));
}else if(s.indexOf("-")>-1){
String[] str=s.split("[-]");
System.out.println(Double.parseDouble(str[0])-Double.parseDouble(str[1]));
}else if(s.indexOf("*")>-1){
String[] str=s.split("[*]");
System.out.println(Double.parseDouble(str[0])*Double.parseDouble(str[1]));
}else if(s.indexOf("/")>-1){
String[] str=s.split("[/]");
System.out.println(Double.parseDouble(str[0])/Double.parseDouble(str[1]));
}else if(s.indexOf("%")>-1){
String[] str=s.split("[%]");
System.out.println(Integer.parseInt(str[0])%Integer.parseInt(str[1]));
}
}
}

//测试过了可以用.注意不要故意写错就行 写错了式子会出异常,没有处理异常  你要求的功能还是有的

更多追问追答
追问
结果错误,提交不正确,何解?当然那些细节我已经处理了、
追答
额 瞬间出来这么多代码.不过我没太看懂你什么意思,提交给系统 系统怎么判断代码对错
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友27021c1535
2013-12-27 · TA获得超过219个赞
知道小有建树答主
回答量:483
采纳率:66%
帮助的人:169万
展开全部
public static void main(String[] args) {
        
        Scanner scanner  = new Scanner(System.in);
        int f = scanner.nextInt();
        LinkedList list = getAnswer(f,scanner);
        
        for(int i = 0 ; i < list.size();i++){
            System.out.println(list.get(i));
        }
    }

    private static LinkedList getAnswer(int f, Scanner scanner) {
        LinkedList list = new LinkedList();
        for(int i = 0 ; i < f;i++){
            String s = scanner.next();
            String []ss = s.split("[+|\\-|*|/|%]");
            if(s.indexOf("+")!=-1){
                list.add((Math.round((Float.parseFloat(ss[0]) + Float.parseFloat(ss[1]))*100))/100f);
            }else if(s.indexOf("-")!=-1){
                list.add((Math.round((Float.parseFloat(ss[0]) - Float.parseFloat(ss[1]))*100))/100f);
            }else if(s.indexOf("*")!=-1){
                list.add((Math.round((Float.parseFloat(ss[0]) * Float.parseFloat(ss[1]))*100))/100f);
            }else if(s.indexOf("/")!=-1){
                list.add((Math.round((Float.parseFloat(ss[0]) / Float.parseFloat(ss[1]))*100))/100f);
            }else if(s.indexOf("%")!=-1){
                list.add(Integer.parseInt(ss[0]) % Integer.parseInt(ss[1]);
            }
        }
        return list;
    }
更多追问追答
追问
你的+运算怎么是保留一位小数的呢?要保留两位呀,我都不会改了。
追答
都是保留两位第二位为0 则不显示。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-27
展开全部
JDK6
使用内嵌的script,功能比较强大
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
q彭海秋
2013-12-27
知道答主
回答量:4
采纳率:0%
帮助的人:4861
展开全部
你猜我会不会!哈哈!!!
追问
鸟人一边站。。。
追答
有意思没意思?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式