java简单的四则运算.
输入测试用例:
4
1+2
3.12*4
7%3 展开
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个,但下面的计算表达式好像少了一个,所以我加了一个除法的计算表达式,若理解有误,还望说明。
提交系统过不了,显示结果不正确,何解?
不好意思,不太清楚你说的过不了啥意思,我这边运行的都是正确的,你那边是报错了还是怎么回事,能将代码贴出来看下嘛?
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]));
}
}
}
//测试过了可以用.注意不要故意写错就行 写错了式子会出异常,没有处理异常 你要求的功能还是有的
结果错误,提交不正确,何解?当然那些细节我已经处理了、
额 瞬间出来这么多代码.不过我没太看懂你什么意思,提交给系统 系统怎么判断代码对错
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
使用内嵌的script,功能比较强大
鸟人一边站。。。
有意思没意思?
广告 您可能关注的内容 |