StringTokenizer用法详解及举例

StringTokenizer自定义字符为分界符进行拆分,下面用例子来说明:

StringTokenizer自定义字符为分界符进行拆分,下面用例子来说明:
public class To {

public static void main(String[] args) throws IOException {
  InputStreamReader isr = new InputStreamReader(System.in);
       BufferedReader br = new BufferedReader(isr);
       String line;
       StringTokenizer st;
       while((line=br.readLine())!=null){
          st = new StringTokenizer(line,",");
//定义以逗号为切割分解符,如果此处写成 st = new StringTokenizer(line);则默认空格为分割符
             while(st.hasMoreTokens()) { 
                 System.out.println(st.nextToken());
             }
       }
}
}

输入:1,2,3,4,5
程序输出结果为:
1
2
3
4
5
下面一道例题用到了StringTokenizer
题目描述
老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.
输入描述:

输入包括多组测试数据。
每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。
学生ID编号从1编到N。
第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩
接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B,当C'Q'的时候, 表示这是一条询问操作,他询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少
当C为‘U’的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。

输出描述:

对于每一次询问操作,在一行里面输出最高成绩.

示例1
输入

5 7
1 2 3 4 5
Q 1 5
U 3 6
Q 3 4
Q 4 5
U 4 5
U 2 9
Q 1 5
输出

5
6
5
9

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.*;
import java.io.IOException;
public class Main{
    public static void main(String[] args) throws IOException{
        //准备好输入流
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        String line;
        StringTokenizer st;
        while((line=br.readLine())!=null){
              //开始进入第一批的输入的执行
              st = new StringTokenizer(line);
              //获得学生的数目
              int M = Integer.parseInt(st.nextToken());
              //获得操作的数目
              int N = Integer.parseInt(st.nextToken());
              //获得初始化的成绩
              int[] score = new int[M+1];
              if((line=br.readLine())!=null){
                  st = new StringTokenizer(line);
                  for(int i=1;i<=M;i++){
                      score[i] = Integer.parseInt(st.nextToken());

                  }

              }
             //开始操作
             for(int i=0;i end)
             return max(end,start,students);
        else{
            //找到区间的最大值
            int max = students[start];
            for(int i=start+1;i<=end;i++){
                if(students[i]>max){
                    max = students[i];
                }
            }
            return max;
        }
     }
  }

猜你喜欢

转载自blog.csdn.net/shijiu2012/article/details/82259457