GVKun编程网logo

在多行文本文件上使用StringTokenizer时出错(使用多行文本编辑器时,其中%%c)

16

本文将为您提供关于在多行文本文件上使用StringTokenizer时出错的详细介绍,我们还将为您解释使用多行文本编辑器时,其中%%c的相关知识,同时,我们还将为您提供关于14.Java中的Strin

本文将为您提供关于在多行文本文件上使用StringTokenizer时出错的详细介绍,我们还将为您解释使用多行文本编辑器时,其中%%c的相关知识,同时,我们还将为您提供关于14.Java中的StringTokenizer类的使用方法、AG 百家家乐最新官网《 787977.tv 飞机 @gb560 》stringtokenizer java,Java 中的 StringTokenizer「建议收藏」、JAVA StringBuffer类与StringTokenizer类代码解析、java StringTokenizer的实用信息。

本文目录一览:

在多行文本文件上使用StringTokenizer时出错(使用多行文本编辑器时,其中%%c)

在多行文本文件上使用StringTokenizer时出错(使用多行文本编辑器时,其中%%c)

我正在尝试读取文本文件,并使用Java中的字符串令牌生成器实用程序分别拆分单词。

文本文件如下所示;

a 20004  b 3000  c 4000  d 5000

现在,我想做的是从文本文件中获取每个字符并将其存储到数组列表中。然后,我尝试最后打印arraylist中的每个元素。

这是我的代码;

import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.StringTokenizer;public static void main(String[] args) {    String fileSpecified = args[0];    fileSpecified = fileSpecified.concat(".txt");    String line;    System.out.println ("file Specified = " + fileSpecified);    ArrayList <String> words = new ArrayList<String> ();    try {        FileReader fr = new FileReader (fileSpecified);        BufferedReader br = new BufferedReader (fr);        line = br.readLine();        StringTokenizer token;        while ((line  = br.readLine()) != null) {            token = new StringTokenizer (line);            words.add(token.nextToken());        }    } catch (IOException e) {        System.out.println (e.getMessage());    }    for (int i = 0; i < words.size(); i++) {        System.out.println ("words = " + words.get(i));    }}

我得到的错误消息是这样;

Exception in thread "main" java.util.NoSuchElementException                   at java.util.StringTokenizer.nextToken<Unknown Source>                  at getWords.main<getWords.java:32>

其中“ getWords”是我的Java文件的名称。

谢谢。

答案1

小编典典

a)您始终必须先检查StringTokenizer.hasMoreTokens()NoSuchElementException如果没有更多标记可用,则抛出是已记录的行为:

token = new StringTokenizer (line);while(token.hasMoreTokens())    words.add(token.nextToken());

b)请勿为每一行创建一个新的令牌生成器,除非您的文件太大而无法容纳到内存中。将整个文件读取为一个字符串,并让分词器对此进行处理

14.Java中的StringTokenizer类的使用方法

14.Java中的StringTokenizer类的使用方法

StringTokenizer是字符串分隔解析类型,属于:java.util包。

1.StringTokenizer的构造函数
StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。
StringTokenizer(String str,String delim):构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符。
StringTokenizer(String str,String delim,boolean returnDelims):构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。
2.StringTokenizer的一些常用方法
说明:
1.所有方法均为public;
2.书写格式:[修饰符] <返回类型><方法名([参数列表])>
int countTokens():返回nextToken方法被调用的次数。
boolean hasMoreTokens():返回是否还有分隔符。
boolean hasMoreElements():返回是否还有分隔符。
String nextToken():返回从当前位置到下一个分隔符的字符串。
Object nextElement():返回从当前位置到下一个分隔符的字符串。
String nextToken(String delim):与4类似,以指定的分隔符返回结果。

 

String s=new String("The Java platform is the ideal platform for network computing");
StringTokenizer st=new StringTokenizer(s);
System.out.println("Token Total:"+st.countTokens());
while ( st.hasMoreElements() ){
System.out.println(st.nextToken());
}


String s=new String("The=Java=platform=is=the=ideal=platform=for=network=computing");
StringTokenizer st=new StringTokenizer(s,"=",true);
System.out.println("Token Total:"+st.countTokens());
while ( st.hasMoreElements() ){
System.out.println(st.nextToken());
}

 

AG 百家家乐最新官网《 787977.tv 飞机 @gb560 》stringtokenizer java,Java 中的 StringTokenizer「建议收藏」

AG 百家家乐最新官网《 787977.tv 飞机 @gb560 》stringtokenizer java,Java 中的 StringTokenizer「建议收藏」

大家好,又见面了,我是你们的朋友全栈君。

Java 中的 StringTokenizer

java.util.StringTokenizer 类允许您将字符串分成令牌。这是打破字符串的简单方法。

它没有提供区分数字,带引号的字符串,标识符等的功能,例如 StreamTokenizer 类。我们将在 I/O 一章中讨论 StreamTokenizer 类。

StringTokenizer 类的构造方法

StringTokenizer 类中定义了 3 个构造函数。

Constructor

Description

StringTokenizer(String str)

creates StringTokenizer with specified string.

StringTokenizer(String str, String delim)

creates StringTokenizer with specified string and delimeter.

StringTokenizer(String str, String delim, boolean returnValue)

creates StringTokenizer with specified string, delimeter and returnValue. If return value is true, delimiter characters are considered to be tokens. If it is false, delimiter characters serve to separate tokens.

StringTokenizer 类的方法

StringTokenizer 类的 6 个有用方法如下:

Public method

Description

boolean hasMoreTokens()

checks if there is more tokens available.

String nextToken()

returns the next token from the StringTokenizer object.

String nextToken(String delim)

returns the next token based on the delimeter.

boolean hasMoreElements()

same as hasMoreTokens() method.

Object nextElement()

same as nextToken() but its return type is Object.

int countTokens()

returns the total number of tokens.

StringTokenizer 类的简单示例

让我们看一下 StringTokenizer 类的简单示例,该类在空格的基础上标记字符串 “我的名字是可汗”。

StringTokenizer 类的 nextToken (String delim) 方法的示例

现在不建议使用 StringTokenizer 类。建议使用 String 类或 regex (正则表达式) 的 split () 方法。

0

相关文章:Java 中的 JVM 的关闭挂钩 关闭挂钩是一种特殊的结构,允许开发人员插入要在 JVM 关闭时执行的代码。这在需要关闭 VM 的情况下需要执行特殊清理 […]…

Java 中的 for-each 循环 For-each 是 Java5 中引入的另一种数组遍历技术,例如 for 循环,while 循环,do-while 循环。 […]…

在 Java 中使用_(下划线) 作为变量名 Java 9 对 Java 语言的功能进行了更改,而从合法名称中删除下划线是甲骨文 Oracle 的一项重大更改: 绝不 […]…

了解 Java 中 “public static void main” 中的 “ static” 以下几点解释了 main () 方法中的 “static”: main () 方法:Java 中的 main () 方 […]…

Java 中的按位运算符 按位运算符用于对数字的各个位进行操作。它们可以与任何整数类型 (char,short,int 等) 一起使用。在执行 […]…

修剪 Java 中的字符串 (删除前导和尾随空格) 给定字符串,请从字符串中删除所有前导和尾随空格,然后将其返回。 例子: Input : str = ” Hel […]…

Java 中的 volatile 关键字 使用 volatile 是使类线程安全的另一种方式 (如同步的原子包装)。线程安全意味着一个方法或类实例可以被多个线 […]…

Java 中的构造函数链接 (带示例) 先决条件: Java 中的构造函数 构造函数链接是相对于当前对象从另一个构造函数调用一个构造函数的过程。 构造函 […]…

JAVA StringBuffer类与StringTokenizer类代码解析

JAVA StringBuffer类与StringTokenizer类代码解析

 StringBuffer类提供了一个字符串的可变序列,类似于String类,但它对存储的字符序列可以任意修改,使用起来比String类灵活得多。它常用的构造函数为:

StringBuffer()

构造一个空StringBuffer对象,初始容量为16个字符。

StringBuffer(Stringstr)

构造一个StringBuffer对象,初始内容为字符串str的拷贝。

对于StringBuffer类,除了String类中常用的像长度、字符串截取、字符串检索的方法可以使用之外,还有两个较为方便的方法系列,即append方法系列和insert方法系列。

(1)append方法系列根据参数的数据类型在StringBuffer对象的末尾直接进行数据添加。

public StringBuffer append(boolean b)
public StringBuffer append(char c)
public StringBuffer append(char[] str)
public StringBuffer append(char[] str,int offset,int len)
public StringBuffer append(double d)
public StringBuffer append(float f)
public StringBuffer append(int i)
public StringBuffer append(long l)
public StringBuffer append(Object obj)
public StringBuffer append(String str)
public StringBuffer append(StringBuffer sb)

(2) insert方法系列根据参数的数据类型在StringBuffer的offset位置进行数据插入。

public StringBuffer insert(int offset,boolean b)
public StringBuffer insert(int offset,char c)
public StringBuffer insert(int offset,char[] str)
public StringBuffer insert(int index,char[] str,int len)
public StringBuffer insert(int offset,double d)
public StringBuffer insert(int offset,float f)
public StringBuffer insert(int offset,int i)
public StringBuffer insert(int offset,long l)
public StringBuffer insert(int offset,Object obj)
public StringBuffer insert(int offset,String str)

(3) 下面这个方法用于将stringbuffer对象的数据转换成字符串:

public String toString()

【例3.12】基于例3.11进行修改,使用StringBuffer对象得到如图3.10所示的输出界面。

//程序文件名为TestString.java 
public class TestString 
{ 
  public static void main(String[] args) 
  { 
  StringBuffer str = new StringBuffer("The substring begins at the specified beginIndex."); 
  StringBuffer str1 = new StringBuffer("string"); 
  String str2 = new String(); 
  int size = str.length(); 
  int flag = str.indexOf("substring"); 
  str2 = str.substring(flag,flag + 9); 
  StringBuffer strOut = new StringBuffer("字符串"); 
  strOut.append(str); 
  strOut.append("总长度为:");    
  strOut.append(size); 
  int f = strOut.indexOf("总"); 
  strOut.insert(f,'\n'); 
  System.out.println(strOut.toString());  
  if(str1.toString().equals(str2)) 
     System.out.println("截取的字符串为:" + str1.toString()); 
  else 
     System.out.println("截取的字符串为:" + str2); 
    } 
} 

StringTokenizer(Stringstr,Stringdelim)  

使用delim分隔符,以初始字符串str构建StringTokenizer对象。  

intcountTokens()  

返回识别的总记号数。  

booleanhasMoretokens()  

测试是否还有识别的记号。  

booleannextToken(Stringdelim)  

返回字符串delim分隔的下一个记号。  

StringnextToken()  

返回下一个识别的记号。  

import java.util.*; 
 
public class Usetoken  
{ 
  public static void main(String[] args)  
  { 
    String str = "数学::英语::语文::化学"; 
    StringTokenizer st = new StringTokenizer(str,"::"); 
    System.out.println(str + "\n课程数为:" +st.countTokens()); 
  while (st.hasMoretokens())  
  { 
  System.out.println(st.nextToken("::")); 
  } 
  str = "Hello this is a test"; 
  st = new StringTokenizer(str); 
  System.out.println(str + "\n单词数为:" +st.countTokens()); 
  while (st.hasMoretokens())  
  { 
    System.out.println(st.nextToken()); 
      } 
   } 
} 

总结

以上就是本文关于JAVA StringBuffer类与StringTokenizer类代码解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

java StringTokenizer

java StringTokenizer

   在java引入正则表达式和Scanner类之前分割字符串的唯一方法是使用StringTokenizer来分词,不过现在有了正则表达式和Scanner类我们可以使用更加简单更加简洁的方式来完成同样的工作了. 下面的例子是它们之间的比较,使用正则表达式和Scanner可以很方便的分割字符StringTokenizer可以废弃不用了

//: strings/ReplacingStringTokenizer.java
import java.util.*;

public class ReplacingStringTokenizer {
  public static void main(String[] args) {
    String input = "But I''m not dead yet! I feel happy!";
    StringTokenizer stoke = new StringTokenizer(input);
    while(stoke.hasMoreElements())
      System.out.print(stoke.nextToken() + " ");
    System.out.println();
    System.out.println(Arrays.toString(input.split(" ")));
    Scanner scanner = new Scanner(input);
    while(scanner.hasNext())
      System.out.print(scanner.next() + " ");
  }
} /* Output:
But I''m not dead yet! I feel happy!
[But, I''m, not, dead, yet!, I, feel, happy!]
But I''m not dead yet! I feel happy!
*///:~

 

我们今天的关于在多行文本文件上使用StringTokenizer时出错使用多行文本编辑器时,其中%%c的分享已经告一段落,感谢您的关注,如果您想了解更多关于14.Java中的StringTokenizer类的使用方法、AG 百家家乐最新官网《 787977.tv 飞机 @gb560 》stringtokenizer java,Java 中的 StringTokenizer「建议收藏」、JAVA StringBuffer类与StringTokenizer类代码解析、java StringTokenizer的相关信息,请在本站查询。

本文标签: