美文网首页
Scanner/Str(split)2intArray/Arra

Scanner/Str(split)2intArray/Arra

作者: 小咕咕coco | 来源:发表于2019-06-03 16:21 被阅读0次
    import java.util.Scanner;
    import java.util.Arrays;
    
    public class Bin {
        static int index = 0;       //全局变量,用于遍历before序列
        public static void main(String[] args) {
            int temp;
    //对象命名不要和类库冲突
            java.util.Scanner mscanner=new java.util.Scanner(System.in);
    //从输入中读取一个int数组
    //先读取一行字符串
            String inputstring= mscanner.nextLine();
    //切割成子串数组,每个字串是一个代表int的字符串
            String stringArray[]= inputstring.split(";");     //split
            String Before[]=stringArray[0].split(",");
            String Middle[]=stringArray[1].split(",");
    //建立数组,string转换为int数组
            int[] before=new int[Before.length];
            int[] middle=new int[Middle.length];
            for (int i=0;i<Before.length;i++){
                before[i]=Integer.parseInt(Before[i]);       //integer.parseInt
                middle[i]=Integer.parseInt(Middle[i]);
            }
    
    //数组可取长度
            int length=middle.length;
            Bin bin = new Bin();
            bin.getAfter(before, middle,length);
        }
    
        public void getAfter(int[] before, int[] middle,int length){
            int tlength=middle.length;
            if (tlength==0) return;
    //index每次递归加1,用以获取before序列中的下一个根字符
            int root = before[index++];
    //获取根在中序遍历中出现的位置,以此切割中序遍历的字符串
            int i;
            for (i=0;(i<tlength)&&(middle[i]!=root);i++);
    //切分middle字符串,得到left和right两部分
            int[] left =Arrays.copyOfRange(middle,0,i);      //Array.copyOfRange
            int[] right =Arrays.copyOfRange(middle,i+1,tlength);
    //递归处理左、右子树
            getAfter(before,left,length);           
            getAfter(before,right,length);  
    //输出后序序列
            System.out.print(root);
            if (tlength<length) System.out.print(",");
        }
    }
    

    Scanner

    • Scanner对象被调用时, 会从标准输入(或其他)的缓冲区内读取数据并存入自己的存储区域
      (所以如果再创建其他的Scanner对象,没有新输入的话,在缓冲区是加载不到数据的)
    • 处理自己存储区域的数据流

      1. 读取单个基本类型
      • 分隔符很重要:默认空格,可指定: .useDelimiter
      • nextByte()、nextShort()、 nextInt() 、nextLong()、 nextFloat() 、nextDouble() 、 nextBoolean()等

      2.一个字符串:next(),以空格或者换行分隔

      1. 整行:nextLine(),以换行分隔。

    相关文章

      网友评论

          本文标题:Scanner/Str(split)2intArray/Arra

          本文链接:https://www.haomeiwen.com/subject/nqncxctx.html