这是一个学校项目:
目标:
要求用户输入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();
}
}
答案 0 :(得分:2)
查看GSC代码 - 如果我输入1个字符然后按回车键,当我按Enter键时,InputBuffer的长度是多少?
由于您想要读取整行,请考虑使用InputStreamReader读取System.in,然后使用BufferedReader来包装该读取器(以便您可以调用readLine)。