【发布时间】:2013-05-18 01:12:59
【问题描述】:
我的 java 项目有问题。我通过搜索和阅读完成了作业,但似乎找不到我需要的东西。我需要做的是每次单击按钮时,从文本文件中读取一行并将其输入到文本字段中。我认为一旦我对第一部分有了想法,后一部分就不难了。我对如何在点击时读取整个文件有一个想法,但每次都一行一行地让我卡住了。
我用这个位来查看每一行的数据是不是我要找的:
private boolean validRecord( String line )
{
/** Local Variables **/
boolean validRecord = true; // Assumes Good Data
int counter = 0;
for ( int i = 0; i < line; i++ )
{
if ( line.charAt( i ).isDigit )
counter++;
if ( !line.charAt( i ).isDigit )
validRecord = false;
}
if ( counter != fieldArray.length )
validRecord = false;
return validRecord;
}
如果有人可以提供帮助,我将不胜感激,因为这是我第一次处理从文件中读取的问题。谢谢。为了进一步澄清,我想在第一次点击时读取第一行,每次点击时读取下一行,直到文件被一路搜索。
public void fileReader( String inputFile )
{
/** Local Constants **/
final String ERROR = "File Error!";
/** Local Variables **/
BufferedReader inStream = null;
Scanner in;
String line;
if ( isReadableFile( inputFile ) )
{
try
{
in = new Scanner( new File( inputFile ) );
line = in.next();
while ( in.hasNextLine() )
{
line = in.nextLine();
int j = 0;
if ( validRecord( line ) )
{
for ( int i = 0; i < line.length(); i++ )
{
if ( Character.isDigit( line.charAt( i ) ) )
{
fieldArray[ j ].setText( line.charAt( i ) +
BLANK );
j++;
}
}
}
else
System.out.println( "Invalid Record" );
}
in.close();
}
catch ( Exception e )
{
System.out.println( ERROR );
}
}
else
System.out.println( "File not readable" );
}
public void actionPerformed( ActionEvent e )
{
if ( e.getSource() == btnClear )
clearTextFields();
else if ( e.getSource() == btnExit )
System.exit( 0 );
else if ( e.getSource() == btnCheck )
{
testMagicSquare();
jtaOutput.setLineWrap ( true );
}
else if ( e.getSource() == btnFileInput )
fileReader( jtfFileInput.getText() );
【问题讨论】:
-
为什么在按钮点击时一次读取一行?为什么不简单地在程序开始时将整个文件读入
ArrayList<String>,然后在按下按钮时获取列表中的下一个字符串? -
我的教授希望这样做。
-
为了进一步澄清,因为我是这个特殊事物的新手(文件读取),我只想指出正确的方向,所以我仍然可以弄清楚这就是为什么我没有不要在原始帖子中留下更多代码。
-
我改用了 BufferedReader 并且稍微接近了一点。我知道抢到第一线,但从不超过它。