A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

14 个回复

倒序浏览
从文件中读取一行字符串,用.split(),括号里填写加减乘除四个运算符中的一个,取的字符数组,用那个啥Integer,转换为数字,然后比较简单了,然后你就会了,对基础班来说,有点超纲了,基础班那次碰到过
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
用if语句提取运算符,然后将字符数字转换成int,对应输出即可
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
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();          }  }
回复 使用道具 举报
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();

        }

}

点评

你好请教一下为什么你这个代码会报异常Exception in thread "main"***a.lang.NumberFormatException: For input string: "5 "  发表于 2018-4-4 15:28
回复 使用道具 举报
这个用split切不了的。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
用split你把符号都切沒了。先用条件判断。这个字符串包含符号子串,然后切,转化为数字,写对应运算结果
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
郝永 发表于 2017-4-11 00:51
import java.io.BufferedReader;
import java.io.BufferedWriter;

不错 思路很清晰  先用先读取 每行都用+-*/去切成字符串数组 再将字符串数组中的元素转换成整型 再进行运算 再写入
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
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();
                }
        }
}
回复 使用道具 举报 2 0
可以使用properties集合,获取键值对,然后相加,
回复 使用道具 举报
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();
        }
}
回复 使用道具 举报
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();
        }
}
回复 使用道具 举报
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();
        }
}
回复 使用道具 举报
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();
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马