Scanner/Str(split)2intArray/Array.copyOfRange

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(),以换行分隔。

转载于:https://www.jianshu.com/p/8f0898a581a3

猜你喜欢

转载自blog.csdn.net/weixin_34148340/article/details/91337523