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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑晓飞 中级黑马   /  2013-4-13 19:21  /  1287 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑晓飞 于 2013-4-13 20:10 编辑
  1. /*
  2.                 从键盘输入一个字符串,
  3.                 要求将字符串中的所有数字的和求出来.

  4. */
  5. import java.util.Scanner;
  6. class Demo2 {
  7.         public static void main(String[] args) {
  8.                 Scanner sc = new Scanner(System.in);
  9.                 System.out.println("请随机输入一串字符");
  10.                 String msg = sc.nextLine();//键盘输入数值
  11.                 char[] ch = msg.toCharArray();

  12. //要想得到字符串中的所有数字之和、首先将字符串中的数字提取出来
  13.                 for (int i =0;i<ch.length ;i++ ) {
  14.                         int sum = 0;

  15.                         //判断是否为数字
  16.                         if (ch[i]>='0' && ch[i]<='9') {
  17.                                 System.out.println(ch[i]);
  18.                                 /*
  19.                                 sum += ch[i];
  20.                                 System.out.println(sum);
  21.                                 */
  22.                         }        

  23.                 }
  24.         }
  25. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1 神马都是浮云

查看全部评分

10 个回复

倒序浏览
注释打开后、输出结果并不是int类型的和、求教哪里出了问题?
回复 使用道具 举报
哥们,以前学过c++?
代码如下:
import java.util.Scanner;

class Main {

        public static void main(String[] args) {

                Scanner sc = new Scanner(System.in);

                System.out.println("请随机输入一串字符");

                String msg = sc.nextLine();//键盘输入数值

                char[] ch = msg.toCharArray();


//要想得到字符串中的所有数字之和、首先将字符串中的数字提取出来
                int sum = 0;
                for (int i =0;i<ch.length ;i++ )
                {

                        //判断是否为数字

                        if (ch[i]>='0' && ch[i]<='9')
                        {

                               sum += (int)(ch[i]-'0');

                        }   
                }  
                System.out.println(sum);   

        }

}

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
你这个好像是用户只能输入一个数吧!
回复 使用道具 举报
  1. String str="asdfk111kjjkldf2";
  2.                 str=str.replaceAll("\\D","");
  3.                 System.out.println(str);
  4.                 int sum=0;
  5.                 for(int i=0;i<str.length();i++)
  6.                         sum+=(str.charAt(i)-48);
  7.                 System.out.println(sum);
复制代码

评分

参与人数 1黑马币 +9 收起 理由
张熙韬 + 9 神马都是浮云

查看全部评分

回复 使用道具 举报
修改你的代码如下:
import java.util.Scanner;

class Demo2 {

        public static void main(String[] args) {


Scanner sc = new Scanner(System.in);

                                System.out.println("请随机输入一串字符");

                                String msg = sc.nextLine();//键盘输入数值

                              char[] ch = msg.toCharArray();

                //要想得到字符串中的所有数字之和、首先将字符串中的数字提取出来
                              int sum = 0;
                                for (int i =0;i<ch.length ;i++ ) {
                                      
                                //判断是否为数字
                                       if (ch>='0' && ch<='9') {
                               // int num=(int)ch-48;
                               String str=ch+"";
                               int in=Integer.valueOf(str);
                                        sum+=in;
                                       }      
                               }
                                System.out.println("和為:"+sum);
}
}

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
殇_心。 发表于 2013-4-13 19:28
哥们,以前学过c++?
代码如下:
import java.util.Scanner;

没有、以前不是干这个的,今年才开始学的

代码很清晰、看明白了,谢谢你耐心的回答
回复 使用道具 举报
陈圳 发表于 2013-4-13 19:44

嗯、谢谢你的耐心回答、已经找到问题所在了
回复 使用道具 举报
_王涛 发表于 2013-4-13 19:57
修改你的代码如下:
import java.util.Scanner;

谢谢你耐心的回答、找到问题的原因了
回复 使用道具 举报
这里的sum初始值应放在循环外面、避免每次循环归零

  sum += (int)(ch[i]-'0')   char类型要进行int的转换、后面或加或减'o'或者'',使其对应ASCII表值

是自己太疏忽了、谢谢大家的回答
回复 使用道具 举报
本帖最后由 蓝色骨头 于 2013-4-14 00:29 编辑
  1.         public static void main(String[] args) throws IOException {
  2.                 // TODO Auto-generated method stub
  3.                 Scanner sc = new Scanner(System.in);
  4.         System.out.println("input a string like: 123 456 8");
  5.         String line = sc.nextLine();//读取一行
  6.         String[] strs = line.split(" ");//分割行
  7.         
  8.         //计算和
  9.         int sum = 0;
  10.         for(String str:strs){
  11.                 sum += new Integer(str);//使用Ingeter的构造方法,不用自己处理
  12.         }
  13.         
  14.         System.out.println("sum="+sum);
  15.         }
复制代码
input a string like: 123 456 8
111 222 333 444
sum=1110
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马