StringTokenizer 用例说明

本文介绍了一个简单的Java程序,该程序能够接收一系列用逗号分隔的数字,并将其按升序和降序排列显示。通过使用StringTokenizer来解析输入的字符串,并利用Arrays.sort方法进行排序。

[color=darkred] 需求:现在输入n个数字,以逗号,分开,然后按升序和降序分别显示 [/color]

 public static String[] splitStringByComma(String source){

       if(source==null || source.equals("")){

                   return null;

      }

StringTokenizer commToker = new StringTokenizer(source,",");

String [] result = new String[commaToker.countTokens()];

         int i=0;

while(commaToker.hasMoreTokens()){

             result[i] = commaToker.nextToken();

            i++;

     }

       return result ;

}

 public static void main(String[] args) throws Exception{

 

    String [] s = splitStringByComma("5,8,7,4,3,9,1");

        int [] ii = new int[s.length];

     for(int i=0; i<s.length;i++){

                   ii[i] =Integer.parseInt(s[i]);

        }

 

 

    Arrrays.sort(ii);

      //asc

for(int i=0; i<s.length;i++){

         System.out.println(ii[i]);

  }

 

// desc

for(int j=(s.length-1); j>=0; j--){

 System.out.println(ii[j]);

 

}

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

### Java 实现分割字符串并记录单词首次出现位置的方法 以下是基于提供的引用内容以及专业知识设计的一个完整的解决方案。此方案通过 `StringTokenizer` 和 `HashMap` 来实现对输入字符串的处理,从而找到每个单词首次出现的位置。 #### 方法说明 该方法的核心逻辑如下: 1. 使用 `StringTokenizer` 对字符串按指定分隔符进行分割。 2. 遍历分割后的单词列表,并利用 `indexOf()` 函数查找其在原字符串中的起始索引。 3. 将单词及其对应的首次出现位置存入 `HashMap` 中。 下面是具体的代码实现: ```java import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; public class WordPositionFinder { /** * 返回一个Map集合来保存单词和它们首次出现的下标, * key为单词名称,value为单词的角标。 * * @param input 输入的字符串 * @return 包含单词及其首次出现位置的Map */ public Map<String, Integer> findWordPositions(String input) { Map<String, Integer> resultMap = new HashMap<>(); // 创建 StringTokenizer 并定义分隔符(逗号、句号、空格) StringTokenizer tokenizer = new StringTokenizer(input, ", .\n", false); while (tokenizer.hasMoreTokens()) { String word = tokenizer.nextToken(); // 如果单词尚未被记录,则将其加入到结果集中 if (!resultMap.containsKey(word)) { int position = input.indexOf(word); // 查找单词首次出现的位置 resultMap.put(word, position); } } return resultMap; } public static void main(String[] args) { WordPositionFinder finder = new WordPositionFinder(); // 测试用 String testStr = "hello world hello programming"; Map<String, Integer> result = finder.findWordPositions(testStr); System.out.println("单词及其首次出现的位置:"); for (Map.Entry<String, Integer> entry : result.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } } } ``` #### 关键点解析 1. **字符串分割** 利用了 `StringTokenizer` 的功能,可以按照多个分隔符 `,`, `.`, `\n`, 或者空白字符将字符串分解成单独的单词[^1]。 2. **首次出现位置计算** 调用 `input.indexOf(word)` 获取当前单词在整个字符串中第一次出现的位置。这种方法确保即使有重复单词也只记录第一个实的位置[^1]。 3. **数据结构的选择** 使用了 `HashMap` 存储单词与其对应位置的关系,因为它的特性非常适合这种一对一映射场景[^1]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值