黑马程序员技术交流社区

标题: 编程题 [打印本页]

作者: 刘永贵    时间: 2013-7-8 01:20
标题: 编程题
本帖最后由 刘永贵 于 2013-7-8 12:23 编辑

   有一编程题想了好久    也写不出来 请求高手们为我家答      有键盘录入两个字符串“12”与“24”,将他们转换成整数,然后计算并输出这两个数的和。




作者: 张云杰    时间: 2013-7-8 02:14
本帖最后由 张云杰 于 2013-7-8 02:52 编辑

这题真要做, 只能用集合实现
                BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
                String str = null;
                List list = new ArrayList();
                int sum = 0;
                int temp = 0;
                while((str=bfr.readLine())!=null){
                        
                        if(str.equals("over")){
                                if(list.size()==1){
                                        System.out.println("请重新运行");
                                        break;
                                }else{
                                        for (int i = 0; i < list.size(); i++) {
                                                temp = Integer.parseInt((String)list.get(i));
                                                sum = sum+temp;
                                        }
                                }
                                System.out.println(sum);
                                break;
                        }else{
                                list.add(str);        
                        }
                }

发现楼下代码 好像跟我的差不多... 算了.. 明天我换个方式做..
作者: toShareBeauty    时间: 2013-7-8 02:30
本帖最后由 toShareBeauty 于 2013-7-8 02:32 编辑
  1. package cn.itcast.others;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.ArrayList;
  6. import java.util.List;

  7. public class Sum {

  8.         /**
  9.          * @param args
  10.          */
  11.         public static void main(String[] args) {
  12.                 // TODO Auto-generated method stub
  13.                 System.out.println("请输入需要求和的整数,并用回车隔开每个数,输入完毕后请输入 over 字符串结束输入:");
  14.                 System.out.println(sum(new KeyInputIntNumber().inputNumber()));
  15.         }
  16.         
  17.         public static int sum(Integer...integers){
  18.                 int sum = 0;
  19.                 for(Integer number:integers){
  20.                         sum += number;
  21.                 }
  22.                 return sum;
  23.         }

  24. }

  25. interface InputNumber<T extends Number>{
  26.         T[] inputNumber();
  27. }

  28. class KeyInputIntNumber implements InputNumber<Integer>{

  29.         @Override
  30.         public Integer[] inputNumber() {
  31.                 // TODO Auto-generated method stub
  32.                 List<Integer> integerList = new ArrayList<Integer>();
  33.                 BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in));
  34.                 try {
  35.                         String temp = bufReader.readLine();
  36.                         while(!temp.equals("over")){
  37.                                 try {
  38.                                         integerList.add(Integer.parseInt(temp));
  39.                                 } catch (NumberFormatException e) {
  40.                                         // TODO Auto-generated catch block
  41.                                         System.out.println(temp + "不能被解析为整形数据,请再输入");
  42.                                 }
  43.                                 temp = bufReader.readLine();
  44.                         }
  45.                         
  46.                 } catch (IOException e) {
  47.                         // TODO Auto-generated catch block
  48.                         e.printStackTrace();
  49.                 }
  50.                 Integer[] a = new Integer[0];
  51.                 return integerList.toArray(a);
  52.         }
  53. }
复制代码
下面是命令行的输出:

作者: 张云杰    时间: 2013-7-8 02:30
本帖最后由 张云杰 于 2013-7-8 02:38 编辑


正则自己写.. 大晚上无聊给你这个玩一下.. 继续埋头写日志
作者: 草貌路飞    时间: 2013-7-8 02:38
不知道是不是我理解错了..我的输入是 11 22 这种格式。即使是"11"  "22"这种格式也只用操作下字符串么,为什么说要用到集合呢。难道我真的理解错题意了?
import java.util.Scanner;
public class Test3
{
        public static void main(String[] args)
        {
                Scanner sc = new Scanner(System.in);
                int first = sc.nextInt();
                int second = sc.nextInt();
                System.out.println(first + " + " + second + " = " + (first + second));
        }
}
作者: 张云杰    时间: 2013-7-8 02:42
本帖最后由 张云杰 于 2013-7-8 02:44 编辑
草貌路飞 发表于 2013-7-8 02:38
不知道是不是我理解错了..我的输入是 11 22 这种格式。即使是"11"  "22"这种格式也只用操作下字符串么,为 ...

如果多个你怎么操作? 你总不能一个个next过去, 程序本来就要多方面的思考, 作为程序员,需要思考更多的细节..
作者: 草貌路飞    时间: 2013-7-8 03:07
张云杰 发表于 2013-7-8 02:42
如果多个你怎么操作? 你总不能一个个next过去, 程序本来就要多方面的思考, 作为程序员,需要思考更多的细节 ...

好吧..我贪图简单了。不应该这样的,领教了。




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