range() in Java

A range is a very handy feature of programing languages like Python.

  • range( 10 ) -> 0 1 2 3 4 5 6 7 8 9
  • range( 5, 10 ) -> 5 6 7 8 9
  • range( 0, 10, 3 ) -> 0 3 6 9
  • range( ‚0‘, ‚9‘ ) -> 012345678

 

package com.tutego;

import static com.tutego.Range.range;

public class RangeDemo
{
public static void main( String[] args )
{
for ( int i : range( 10 ) )
System.out.print( i + " " );

System.out.println();

for ( int i : range( 5, 10 ) )
System.out.print( i + " " );

System.out.println();

for ( int i : range( 0, 10, 3 ) )
System.out.print( i + " " );

System.out.println();

for ( int i : range( '0', '9' ) )
System.out.print( (char) i );

System.out.println();

String[] a = { "Mary", "had", "a", "little", "lamb" };
for ( int i : range(a.length ) )
System.out.printf( "%d %s%n", i, a[i] );
}
}

And the main class Range

/*
* This project is made available under the terms of the BSD license, more information can be found at
* http://www.opensource.org/licenses/bsd-license.html
*
* Copyright (c) 2007. Christian Ullenboom (http://www.tutego.com/) and contributors. All rights reserved.
*/
package com.tutego;

import java.util.Iterator;

/**
* Class that generates immutable sequences (ranges) as Iterable<Integer>
* objects. A range represents a start (0 if not given), an stop (mandatory) and
* an optional step (1 by default). The start value is included in the range,
* the stop value is exclusive. Every range is handled by an Iterable<Integer>
* which can by used in an extended for loop.
*
* <pre>
* for ( int i : range( 0, 10, 3 ) )
* System.out.print( i + " " ); // 0 3 6 9
* </pre>
*
* @author Christian Ullenboom (tutego)
* @version 1.0
*/
public class Range
{
public static Iterable<Integer> range( final int start, final int stop, final int step )
{
if ( step <= 0 )
throw new IllegalArgumentException( "step > 0 isrequired!" );

return new Iterable<Integer>()
{
public Iterator<Integer> iterator()
{
return new Iterator<Integer>()
{
private int counter = start;

public boolean hasNext()
{
return counter < stop;
}

public Integer next()
{
try
{
return counter;
}
finally { counter += step; }
}

public void remove() { }
};
}
};
}

public static Iterable<Integer> range( final int start, final int stop )
{
return range( start, stop, 1 );
}

public static Iterable<Integer> range( final int stop )
{
return range( 0, stop, 1 );
}
}

Ähnliche Beiträge

Ein Gedanke zu “range() in Java

  1. HALLO,
    ICH VERSUCHE DIESE KLASSE IN MEIN PROJEKT EINZUBAUEN. ABER IMMER, WENN ICH DEN CODE AUS DEM BEISPIEL NEHME:

    FOR (INT I: RANGE(10))

    BEKOMME ICH DIESEN FEHLER VOM COMPILER:

    Exception in thread „main“ java.lang.RuntimeException: Uncompilable source code – incompatible types
    required: int
    found: java.lang.Object

    Was kann ich ändern um diesen Fehler zu vermeiden?

    Danke schonmal,
    Lars

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert