Java不会停止从输入读取

时间:2014-02-08 07:53:17

标签: java

Java不会停止从输入读取。 我知道也许这个while循环可能与它有关:

while(input.hasMoreTokens());
                {
                    array1[counter] = input.nextToken();
                    counter++;
                }

但是我不明白为什么循环应该是一个问题,因为我已经调用.nextToken()来推进令牌。

以下是完整的源代码:

import java.io.*;
import java.util.*;

class HelloWorld
{
    static String ReadLn (int maxLg)  // utility function to read from stdin
    {
        byte lin[] = new byte [maxLg];
        int lg = 0, car = -1;
        String line = "";

        try
        {
            while (lg < maxLg)
            {
                car = System.in.read();
                if ((car < 0) || (car == '\n')) break;
                lin [lg++] += car;
            }
        }
        catch (IOException e)
        {
            return (null);
        }

        if ((car < 0) && (lg == 0)) return (null);  // eof
        return (new String (lin, 0, lg));
    }

    public static void main (String args[])  // entry point from OS
    {
        HelloWorld myWork = new HelloWorld();  // create a dinamic instance
        myWork.Begin();            // the true entry point
    }

    void Begin()
    {
        String idata;
        StringTokenizer input;

        while ((idata = HelloWorld.ReadLn (255)) != null)
        {
            input = new StringTokenizer (idata);

            String[] array1 = {};
            int counter = 0;
            while(input.hasMoreTokens());
            {
                array1[counter] = input.nextToken();
                counter++;
            }


            int[] array2 = {};
            for(int a = 0; a < array1.length; a++)
            {
                array2[a] = Integer.parseInt(array1[a]);
            }
            int[] array3 = {};
            for(int b = 0; b < array2.length; b++)
            {
                if ( array2[b] != 42)
                {
                    array3[b] = array2[b];
                }
                else
                {
                    break;
                }
            }
            String string = "";
            for( int c = 0; c < array3.length; c++)
            {
                if( c < array3.length - 1)
                {
                    string += array3[c] + "\n";
                }
                else
                {
                    string += array3[c];
                }
            }
            System.out.println(string);
        }
    }
}

1 个答案:

答案 0 :(得分:2)

while

末尾有一个迷路分号
while(input.hasMoreTokens());
                            ^ REMOVE THIS