蜜桃养乐多956 2021-09-22 14:39 采纳率: 100%
浏览 103
已结题

java程序 从键盘输入一个字符串

从键盘输入一个字符串 判断这个字符串有几个字母和数字 如果数字个数小于10 则将所有数字组成一个整数输出

  • 写回答

4条回答 默认 最新

  • 乂爻yiyao 2021-09-22 15:28
    关注
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String str = sc.next();
            String num = str.chars().
                    mapToObj(c -> (char) c).
                    filter(Character::isDigit).
                    map(Object::toString).
                    collect(Collectors.joining(""));
            if(num.length() <= 10){
                System.out.println(Integer.valueOf(num));
            }
        }
    

    没考虑开头数字是0的情况,不过所有数字的字符串已经给你了,想考虑这种情况可以自己改。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • espalemit_re 2021-09-22 14:50
    关注

    给你个思路吧 这个你好好看一下 很简单

    首先定义一个string类型的参数就叫num吧
    然后我们先去输入一个字符串这个简单
    Scanner Sc=new Scanner(System.in);
    String next = sc.next();
    next就是我们获取到的参数了
    然后for循环
    在循环里边
    try {
    String ss = String.subString(i,i+1);
    Integer.parseInt(ss);
    num+= ss;
    } catch (Exception e) {
    e.printStackTrace();
    }
    这样循环一遍就会获取到所有的数字并且是string类型的
    string的length判断一下小不小于10 小于了就
    System.out.println(Integer.parseInt(num));
    输出一下就可以了

    评论
  • 乂爻yiyao 2021-09-22 15:52
    关注
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String str = sc.next();
            char[] strToChar = str.toCharArray();
            StringBuilder sb = new StringBuilder();
    //        int flag = 0;
            for(char c : strToChar){
                if(Character.isDigit(c)){
    //                if(c - '0' == 0 && flag == 0){
    //                    continue;
    //                }else{
    //                    flag = 1;
                        sb.append(c);
    //                }
                }
            }
            if (sb.length() <= 10){
                System.out.println(Integer.valueOf(new String(sb)));
            }
        }
    

    给个基础的,想去掉开头的0的话把注释去掉就行

    评论
  • 钰娘娘 2021-09-23 14:06
    关注
    Scanner sc = new Scanner(System.in);
            String str = sc.nextLine();
            int n = str.length();
            StringBuilder sb = new StringBuilder();
            //这一句稍微优化了一下,如果数字长度等于10不用输出了,也不用继续追加,直接跳出
            //比如:12345678901abcdefgwergwetwet123456
            for(int i = 0; i < n && sb.length()<10; i++){
                char c = str.charAt(i);
                if(Character.isDigit(c)){
                    sb.append(c);
                }
            }
    
            if(sb.length()<10){
                //这个地方,前面写的不对,如果包括10个数字,则需要注意边界10个9,超出了Integer范围,必须用long,以下测试:
    //            System.out.println(Integer.MAX_VALUE>=Math.pow(10,10)-1);
                //题目写的是小于,那就用Integer
                System.out.println(Integer.parseInt(sb.toString()));
            }
    
    
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月30日
  • 已采纳回答 9月22日
  • 创建了问题 9月22日

悬赏问题

  • ¥30 如何处理shell命令接收到的视频流并实时播放出来
  • ¥15 有偿求做台风过境全过程模拟仿真
  • ¥50 求!AutomationDesk 如何自动导入Variant数据
  • ¥20 Next.JS 静态导出路由
  • ¥15 我做一个对中文文本情感分析的项目 我用了CNN,和keras框架 报的错误我一直处理不好
  • ¥15 unity使用bakery打光烘焙所遇到的问题。
  • ¥99 二维有限元方法求解,泊松方程
  • ¥15 我需要在PC端 开两个抖店工作台客户端.(语言-java)
  • ¥15 有没有哪位厉害的人可以用C#可视化呀
  • ¥15 可以帮我看看代码哪里错了吗