⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intiterator.java

📁 Rapla是一个灵活的多用户资源管理系统。它提供的一些功能有:日历GUI
💻 JAVA
字号:
/*--------------------------------------------------------------------------*
 | Copyright (C) 2006 Christopher Kohlhaas                                  |
 |                                                                          |
 | This program is free software; you can redistribute it and/or modify     |
 | it under the terms of the GNU General Public License as published by the |
 | Free Software Foundation. A copy of the license has been included with   |
 | these distribution in the COPYING file, if not go to www.fsf.org         |
 |                                                                          |
 | As a special exception, you are granted the permissions to link this     |
 | program with every library, which license fulfills the Open Source       |
 | Definition as published by the Open Source Initiative (OSI).             |
 *--------------------------------------------------------------------------*/
package org.rapla.components.util.iterator;

import java.util.NoSuchElementException;

/** This class can iterate over a string containing a list of integers.
    Its tuned for performance, so it will return int instead of Integer and
    can be reused without recreating by calling the init method.
*/
public class IntIterator {
    int parsePosition = 0;
    String text;
    char delimiter;
    int len;
    int next;
    boolean hasNext=false;
  
    public void init(String text,char delimiter) {
	this.text = text;
	len = text.length();
	this.delimiter = delimiter;
	parsePosition = 0;
	parseNext();
    }
  
    public boolean hasNext() {
	return hasNext;
    }

    public int next() {
	if (!hasNext()) 
	    throw new NoSuchElementException();
	int result = next;
	parseNext();
	return result;
    }
  
    private void parseNext() {
	boolean isNegative = false;
	int relativePos = 0;

	next = 0;

	if (parsePosition == len) {
	    hasNext = false;
	    return;
	}
    
	while (parsePosition< len) {
	    char c = text.charAt(parsePosition );
	    if (relativePos == 0 && c=='-') {
		isNegative = true;
		continue;
	    }
	
	    if (c == delimiter) {
		parsePosition++;
		break;
	    }
      
	    int digit = c-'0';
	    if (digit<0 || digit>9) {
		hasNext = false;
		return;
	    }
      
	    next *= 10;
	    next += digit;
	    parsePosition++;
	    relativePos++;
	} 

	if (isNegative)
	    next *= -1; 

	hasNext = true;
    }
    public int getPos() {
	return parsePosition;
    }
}
    


    




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -