我的随机数生成器没有按照我的意图行事

时间:2010-10-31 04:11:00

标签: java

这是一个学校项目:

目标:

要求用户输入2个号码

随机数将打印给用户。

如果输入不是整数,则必须捕获。

我检查了在线资源,我复制了代码并使用它。

Min + (int)(Math.random() * ((Max - Min) + 1))

代码工作正常,除非我输入任何小于10的整数。程序会将其视为一个字母,并说“ERROR”

我的计划:

import java.lang.StringBuffer;
import java.io.IOException;
import java.util.Random;


class RandomInput2
{
    public static void main(String args[])
    {
        System.out.println("Programe Begins");


        Random seed = new Random();
        int n1 , n2, rand ;
        System.out.println("What is your name?");
        String InputString = GCS();
            while(true)
            {
                try
                {
                    System.out.println("What is your First number?");
                    n1 = Integer.parseInt(GCS());
                    System.out.println("What is your second number");
                    n2 = Integer.parseInt(GCS());
                    rand = n2+ (int)(seed.nextDouble()*((n1-n2)+1));
                    System.out.println(InputString+" Your number is "+rand);
                }

                catch(NumberFormatException NFE)  //catch if integer's not number
                {
                    System.err.println("ERROR");
                    System.err.println("Type in Integer only");
                }
                catch(Exception E)  //catch General Error
                {
                    System.err.println("ERROR");
                }


;
            }
    }


    public static String GCS() //Get Console String
    {
        int noMoreInput =-1; //set int
        char enterKeyHit= '\n'; //set char

        int InputChar;
        StringBuffer InputBuffer = new StringBuffer(100);

        try
        {
            InputChar=System.in.read();
            while(InputChar != noMoreInput)
            {
                if((char)InputChar!=enterKeyHit)
                {
                    InputBuffer.append((char)InputChar);
                }
                else
                {
                    InputBuffer.setLength(InputBuffer.length()-1);
                    break;
                }
                InputChar = System.in.read();
            }//ends while loop
        }
        catch(IOException IOX)
        {
            System.err.println(IOX);
        }
        return InputBuffer.toString();
    }
}

1 个答案:

答案 0 :(得分:2)

查看GSC代码 - 如果我输入1个字符然后按回车键,当我按Enter键时,InputBuffer的长度是多少?

由于您想要读取整行,请考虑使用InputStreamReader读取System.in,然后使用BufferedReader来包装该读取器(以便您可以调用readLine)。