爱发博客的嗯哼 2022-04-08 22:27 采纳率: 80%
浏览 30
已结题

这一题为什么会现实编译错误?


import java.util.Scanner;
public class Main {
        public static void main(String[] args){
            Scanner sc=new Scanner(System.in);
            String s=sc.next();
            int index=s.indexOf(" ");//调用String类里面的API,返回第一个该符号的下标,找出第一个空格出现的地方以便分割字符串;
            String s1=s.substring(0,index);//substring分割字符串,返回值为(0,index-1);
            String s2=s.substring(index+1);
            int flag1=0;//判断第一个字符串的标记
            for (int i = s1.length();i>=0;--i){//进行for循环一个一个判断
                if (!Character.isDigit(s1.charAt(i))){//判断是否为正整数,如果不是标记为1,下同
                    flag1=1;
                    break;
                }
            }
            int a=0,b=0;
            if(flag1==0)//如果标记为0,说明该字符串为数字,然后把字符串转化为数字
                 a=Integer.parseInt(s1);
            }
            int flag2=0;
            for (int i = s2.length();i>=0;--i){
                if (!Character.isDigit(s2.charAt(i))){
                    flag2=1;
                }
            }
            if(flag2==0){//如果标记为0,说明该字符串为数字,然后把字符串转化为数字
                 b=Integer.parseInt(s2);
            }
            if(flag1==0&&flag2==0)
            System.out.println(a+" + "+b+" = "+(a+b));
            if(flag1==1&&flag2==1)
                System.out.println("? + ? = ?");
            if(flag1==1&&flag2==0)
                System.out.println(a+" + ? = ?");
            if(flag1==0&&flag2==0)
                System.out.println("? + "+a+"= ?");
        }
    }

img


https://pintia.cn/problem-sets/994805046380707840/problems/994805110318678016

  • 写回答

3条回答 默认 最新

  • terfation 2022-04-08 23:06
    关注
    1. 11 22行 访问下标越界
    2. 18行没有 {
    3. 35 36 37 行输出错误
                Scanner sc=new Scanner(System.in);
                String s=sc.nextLine();
                int index=s.indexOf(" ");
                String s1=s.substring(0,index);
                String s2=s.substring(index+1);
                int flag1=0;
                for (int i = s1.length()-1;i>=0;--i){
                    if (!Character.isDigit(s1.charAt(i))){
                        flag1=1;
                        break;
                    }
                }
                int a=0,b=0;
                if(flag1==0){
                    a=Integer.parseInt(s1);
                }
                int flag2=0;
                for (int i = s2.length()-1;i>=0;--i){
                    if (!Character.isDigit(s2.charAt(i))){
                        flag2=1;
                    }
                }
                if(flag2==0){
                    b=Integer.parseInt(s2);
                }
                if(flag1==0&&flag2==0)
                    System.out.println(a+" + "+b+" = "+(a+b));
                if(flag1==1&&flag2==1)
                    System.out.println("? + ? = ?");
                if(flag1==1&&flag2==0)
                    System.out.println("? + "+b+" = ?");
                if(flag1==0&&flag2==1)
                    System.out.println(a+" + ?= ?");
            }
    

    img


    另外
    String的split()能通过指定分隔符裁剪字符串,返回String数组

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月17日
  • 已采纳回答 4月9日
  • 创建了问题 4月8日

悬赏问题

  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题