黑马程序员技术交流社区

标题: 谁教我做一下这道题 我不会读取内容和计算结果呀 [打印本页]

作者: MMM521    时间: 2017-4-10 22:48
标题: 谁教我做一下这道题 我不会读取内容和计算结果呀
1.分析以下需求,并用代码实现
项目根路径下有个questions.txt文件内容如下:
  5+5
  150-25
  155*155
  2555/5
要求:读取内容计算出结果,将结果写入到results.txt文件中
  5+5=10
  //....
思考:如果说读取questions.txt文件的内容,算出计算结果,再写入questions.txt文件,即读和写的操作时针对同一个文件,应该如何操作

作者: 预料中的意外    时间: 2017-4-11 00:22
从文件中读取一行字符串,用.split(),括号里填写加减乘除四个运算符中的一个,取的字符数组,用那个啥Integer,转换为数字,然后比较简单了,然后你就会了,对基础班来说,有点超纲了,基础班那次碰到过

作者: 孤舟蓑笠翁    时间: 2017-4-11 00:33
用if语句提取运算符,然后将字符数字转换成int,对应输出即可

作者: 郝永    时间: 2017-4-11 00:46
import java.io.BufferedReader; import java.io.BufferedWriter;  import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;  /*项目根路径下有个questions.txt文件内容如下: 5+5 150-25 155*155 2555/5 要求:读取内容计算出结果,将结果写入到results.txt文件中*/ public class Duxieyunsuan {          public static void main(String[] args) throws IOException {                 BufferedReader bf = new BufferedReader(new FileReader("questions.txt"));                 BufferedWriter bw = new BufferedWriter(new FileWriter("results.txt"));                 String s;                 int n =0;                 while((s=bf.readLine())!=null){                         n++;                         String[] s1 = s.split("\\+|\\-|\\*|\\/");                         if(n==1){                         int a = Integer.parseInt(s1[0]) + Integer.parseInt(s1[1]);                                  bw.write("5+5="+a);                         bw.newLine();                         }                         if(n==2){                         int b = Integer.parseInt(s1[0]) - Integer.parseInt(s1[1]);                                                  bw.write("150-25="+b);                         bw.newLine();                         }                         if(n==3){                         int c = Integer.parseInt(s1[0]) * Integer.parseInt(s1[1]);                                                  bw.write("155*155="+c);                         bw.newLine();                         }                         if(n==4){                         int d = Integer.parseInt(s1[0]) / Integer.parseInt(s1[1]);                                                  bw.write("2555/5="+d);                                                  bw.flush();                         }                  }                 bw.close();                 bf.close();          }  }
作者: 郝永    时间: 2017-4-11 00:51
import java.io.BufferedReader;
import java.io.BufferedWriter;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*项目根路径下有个questions.txt文件内容如下:
5+5
150-25
155*155
2555/5
要求:读取内容计算出结果,将结果写入到results.txt文件中*/
public class Duxieyunsuan {

        public static void main(String[] args) throws IOException {
                BufferedReader bf = new BufferedReader(new FileReader("questions.txt"));
                BufferedWriter bw = new BufferedWriter(new FileWriter("results.txt"));
                String s;
                int n =0;
                while((s=bf.readLine())!=null){
                        n++;
                        String[] s1 = s.split("\\+|\\-|\\*|\\/");
                        if(n==1){
                        int a = Integer.parseInt(s1[0]) + Integer.parseInt(s1[1]);
       
                        bw.write("5+5="+a);
                        bw.newLine();
                        }
                        if(n==2){
                        int b = Integer.parseInt(s1[0]) - Integer.parseInt(s1[1]);
                       
                        bw.write("150-25="+b);
                        bw.newLine();
                        }
                        if(n==3){
                        int c = Integer.parseInt(s1[0]) * Integer.parseInt(s1[1]);
                       
                        bw.write("155*155="+c);
                        bw.newLine();
                        }
                        if(n==4){
                        int d = Integer.parseInt(s1[0]) / Integer.parseInt(s1[1]);
                       
                        bw.write("2555/5="+d);
                       
                        bw.flush();
                        }

                }
                bw.close();
                bf.close();

        }

}
作者: 不忘初心.    时间: 2017-4-11 07:23
这个用split切不了的。

作者: 情不知所起    时间: 2017-4-11 07:52
用split你把符号都切沒了。先用条件判断。这个字符串包含符号子串,然后切,转化为数字,写对应运算结果

作者: 丨灬随风灬丨    时间: 2017-4-11 09:37
郝永 发表于 2017-4-11 00:51
import java.io.BufferedReader;
import java.io.BufferedWriter;

不错 思路很清晰  先用先读取 每行都用+-*/去切成字符串数组 再将字符串数组中的元素转换成整型 再进行运算 再写入

作者: 铲屎男孩    时间: 2017-4-11 10:15
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

/*
* 1.分析以下需求,并用代码实现
项目根路径下有个questions.txt文件内容如下:
  5+5
  150-25
  155*155
  2555/5
要求:读取内容计算出结果,将结果写入到results.txt文件中
  5+5=10
  //....
思考:如果说读取questions.txt文件的内容,算出计算结果,再写入questions.txt文件,即读和写的操作时针对同一个文件,应该如何操作
*/
public class Test03 {
        public static void main(String[] args) throws IOException {
                //创建集合
                ArrayList<String> list = new ArrayList<>();       
                //创建输入缓冲流
                BufferedReader br = new BufferedReader(new FileReader("questions.txt"));
                String line;
                while ((line = br.readLine()) != null){
                        list.add(line);
                }
                //释放资源
                br.close();
                //创建新集合
                ArrayList<String> list1 = new ArrayList<>();
                //遍历集合
                for (int i = 0; i < list.size(); i++) {
                        String s =list.get(i);
                        if (s.contains("+")) {
                                String[] arr = s.split("\\+");
                                s += "="+(Integer.parseInt(arr[0]) + Integer.parseInt(arr[1]));
                                list1.add(s);                               
                        }else if (s.contains("-")) {
                                String[] arr = s.split("-");
                                s += "="+(Integer.parseInt(arr[0]) - Integer.parseInt(arr[1]));
                                list1.add(s);
                        }else if (s.contains("*")) {
                                String[] arr = s.split("\\*");
                                s += "="+(Integer.parseInt(arr[0]) * Integer.parseInt(arr[1]));
                                list1.add(s);
                        }else if (s.contains("/")) {
                                String[] arr = s.split("/");
                                s += "="+(Integer.parseInt(arr[0]) / Integer.parseInt(arr[1]));
                                list1.add(s);
                        }else{
                                System.out.println("计算有误");
                        }
                        //创建输出缓冲流
                        BufferedWriter bw = new BufferedWriter(new FileWriter("questions.txt"));
                        for (int j = 0; j < list1.size(); j++) {
                                bw.write(list1.get(j));
                                bw.newLine();
                        }
                        //释放资源
                        bw.close();
                }
        }
}
作者: 亮仔开发    时间: 2017-4-13 22:25
可以使用properties集合,获取键值对,然后相加,
作者: A1A2A3123    时间: 2018-5-13 13:34
package A0512;

import java.awt.Window;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

public class Test5 {
        /*第五题:分析以下需求,并用代码实现
        项目根路径下有个questions.txt文件内容如下:
        5+5
        150-25
        155*155
        2555/5
        要求:读取内容计算出结果,将结果写入到results.txt文件中
        5+5=10
        //....
        思考:如果说读取questions.txt文件的内容,算出计算结果,再写入questions.txt文件,即读和写的操作时针对同一个文件,应该如何操作

------------------------------------------------------------------*/
        public static void main(String[] args) throws IOException {
                ArrayList<String> list = new ArrayList<>();
                BufferedReader br = new BufferedReader(new FileReader("questions.txt"));
                String line;
                while ((line = br.readLine())!=null) {
                        list.add(line);
                }
                br.close();
                BufferedWriter bw = new BufferedWriter(new FileWriter("results.txt"));
                for (int i = 0;i < list.size(); i++) {
                        String s = list.get(i);
                        if (s.contains("+")) {
                                String[] arr = s.split("\\+");
                                s += "=" + (Integer.parseInt(arr[0]) + Integer.parseInt(arr[1]));
                        }else if (s.contains("-")) {
                                String[] arr = s.split("\\-");
                                s  += "=" + (Integer.parseInt(arr[0]) - Integer.parseInt(arr[1]));
                        }else if (s.contains("*")) {
                                String[] arr = s.split("\\*");
                                s += "=" + (Integer.parseInt(arr[0]) * Integer.parseInt(arr[1]));
                        }else if (s.contains("/")) {
                                String[] arr = s.split("\\/");
                                s += "=" + (Double.parseDouble(arr[0]) / Double.parseDouble(arr[1]));
                        }
                        System.out.println(s);
                        bw.write(s);
                        bw.newLine();
                }
                bw.close();
        }
}
作者: A1A2A3123    时间: 2018-5-13 13:34
package A0512;

import java.awt.Window;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

public class Test5 {
        /*第五题:分析以下需求,并用代码实现
        项目根路径下有个questions.txt文件内容如下:
        5+5
        150-25
        155*155
        2555/5
        要求:读取内容计算出结果,将结果写入到results.txt文件中
        5+5=10
        //....
        思考:如果说读取questions.txt文件的内容,算出计算结果,再写入questions.txt文件,即读和写的操作时针对同一个文件,应该如何操作

------------------------------------------------------------------*/
        public static void main(String[] args) throws IOException {
                ArrayList<String> list = new ArrayList<>();
                BufferedReader br = new BufferedReader(new FileReader("questions.txt"));
                String line;
                while ((line = br.readLine())!=null) {
                        list.add(line);
                }
                br.close();
                BufferedWriter bw = new BufferedWriter(new FileWriter("results.txt"));
                for (int i = 0;i < list.size(); i++) {
                        String s = list.get(i);
                        if (s.contains("+")) {
                                String[] arr = s.split("\\+");
                                s += "=" + (Integer.parseInt(arr[0]) + Integer.parseInt(arr[1]));
                        }else if (s.contains("-")) {
                                String[] arr = s.split("\\-");
                                s  += "=" + (Integer.parseInt(arr[0]) - Integer.parseInt(arr[1]));
                        }else if (s.contains("*")) {
                                String[] arr = s.split("\\*");
                                s += "=" + (Integer.parseInt(arr[0]) * Integer.parseInt(arr[1]));
                        }else if (s.contains("/")) {
                                String[] arr = s.split("\\/");
                                s += "=" + (Double.parseDouble(arr[0]) / Double.parseDouble(arr[1]));
                        }
                        System.out.println(s);
                        bw.write(s);
                        bw.newLine();
                }
                bw.close();
        }
}
作者: A1A2A3123    时间: 2018-5-13 13:46
package A0512;

import java.awt.Window;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

public class Test5 {
        /*第五题:分析以下需求,并用代码实现
        项目根路径下有个questions.txt文件内容如下:
        5+5
        150-25
        155*155
        2555/5
        要求:读取内容计算出结果,将结果写入到results.txt文件中
        5+5=10
        //....
        思考:如果说读取questions.txt文件的内容,算出计算结果,再写入questions.txt文件,即读和写的操作时针对同一个文件,应该如何操作

------------------------------------------------------------------*/
        public static void main(String[] args) throws IOException {
                ArrayList<String> list = new ArrayList<>();
                BufferedReader br = new BufferedReader(new FileReader("questions.txt"));
                String line;
                while ((line = br.readLine())!=null) {
                        list.add(line);
                }
                br.close();
                BufferedWriter bw = new BufferedWriter(new FileWriter("results.txt"));
                for (int i = 0;i < list.size(); i++) {
                        String s = list.get(i);
                        if (s.contains("+")) {
                                String[] arr = s.split("\\+");
                                s += "=" + (Integer.parseInt(arr[0]) + Integer.parseInt(arr[1]));
                        }else if (s.contains("-")) {
                                String[] arr = s.split("\\-");
                                s  += "=" + (Integer.parseInt(arr[0]) - Integer.parseInt(arr[1]));
                        }else if (s.contains("*")) {
                                String[] arr = s.split("\\*");
                                s += "=" + (Integer.parseInt(arr[0]) * Integer.parseInt(arr[1]));
                        }else if (s.contains("/")) {
                                String[] arr = s.split("\\/");
                                s += "=" + (Double.parseDouble(arr[0]) / Double.parseDouble(arr[1]));
                        }
                        System.out.println(s);
                        bw.write(s);
                        bw.newLine();
                }
                bw.close();
        }
}
作者: A1A2A3123    时间: 2018-5-13 13:47
package A0512;

import java.awt.Window;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

public class Test5 {
        /*第五题:分析以下需求,并用代码实现
        项目根路径下有个questions.txt文件内容如下:
        5+5
        150-25
        155*155
        2555/5
        要求:读取内容计算出结果,将结果写入到results.txt文件中
        5+5=10
        //....
        思考:如果说读取questions.txt文件的内容,算出计算结果,再写入questions.txt文件,即读和写的操作时针对同一个文件,应该如何操作

------------------------------------------------------------------*/
        public static void main(String[] args) throws IOException {
                ArrayList<String> list = new ArrayList<>();
                BufferedReader br = new BufferedReader(new FileReader("questions.txt"));
                String line;
                while ((line = br.readLine())!=null) {
                        list.add(line);
                }
                br.close();
                BufferedWriter bw = new BufferedWriter(new FileWriter("results.txt"));
                for (int i = 0;i < list.size(); i++) {
                        String s = list.get(i);
                        if (s.contains("+")) {
                                String[] arr = s.split("\\+");
                                s += "=" + (Integer.parseInt(arr[0]) + Integer.parseInt(arr[1]));
                        }else if (s.contains("-")) {
                                String[] arr = s.split("\\-");
                                s  += "=" + (Integer.parseInt(arr[0]) - Integer.parseInt(arr[1]));
                        }else if (s.contains("*")) {
                                String[] arr = s.split("\\*");
                                s += "=" + (Integer.parseInt(arr[0]) * Integer.parseInt(arr[1]));
                        }else if (s.contains("/")) {
                                String[] arr = s.split("\\/");
                                s += "=" + (Double.parseDouble(arr[0]) / Double.parseDouble(arr[1]));
                        }
                        System.out.println(s);
                        bw.write(s);
                        bw.newLine();
                }
                bw.close();
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2