简单程序从DEITLE的书,读5个整数,程序应该打印含有该号码的相邻星号.i.e(如果num = 5的输出*****)线。 我已经在C++中测试过相同的解决方案,它工作正常。然而,这里的缓冲区保持着奇怪的值(50?)。 我认为问题在于使用缓冲区,但是我想知道为什么会发生这种情况?意外值
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;
import java.io.*;
import java.util.Date;
/**
* Program that reads five numbers and print starts equal to each number
*
* @author Hassan
*/
public class JavaApplication1
{
public static void main(String[] args)
{
int num ;
java.io.InputStreamReader ins= new InputStreamReader(System.in);
java.io.BufferedReader bfr = new BufferedReader (ins);
try
{
for(int i=0;i<5;i++)
{
System.out.println("Please Enter a number");
num = bfr.read();
System.out.print(num);
for(int j=0;j<num;j++)
{ System.out.print("* "); }
System.out.println("\n");
}
}
catch(Exception E)
{System.out.println(E.getMessage()); }
}
}
编辑:问题已经解决,但5个输入的程序-is退房手续阅读3只,即它的读数输入和忽略下一个
第一次读到的BufferedReader的InputStreamReader和类。你可以认为它打开了一个“输入管道”,你可以在其中插入一些数据(在你的int类型的例子中)。如果数据读取不正确,则会发生异常,我认为在您的示例中更正确的是IOException类。 E是Exception类的一个实例,getMessage()是这个类的一个方法。但是,在现代方法中,您使用Scanner类来从键盘输入不同类型的数据。 – user1929959