最近,我在一本关于将用户定义的类作为输入传递给扫描仪的书中读到,但它并没有解释它背后的逻辑。这是程序
import java.nio.CharBuffer;
import java.util.Random;
import java.util.Scanner;
class ScannerInputBase implements Readable
{
private int count;
Random rand = new Random();
ScannerInputBase(int count) { this.count = count; }
public int read(CharBuffer cb) //read is a method in Readable interface
{
if(count-- == 0)
return -1;
for(int i=0;i<2;i++)
{ cb.append('a'); }
return 1;
}
}
public class ScannerInput {
public static void main (String args[]) {
Scanner input = new Scanner(new ScannerInputBase(5));
while(input.hasNext())
{
print(input.next()+"-");
}
}
}
它的输出是
aaaaaaaaaa-
我这里有 2 个问题
在这里如何调用 read() 函数?
我的意思是我明白它是以某种方式被隐式调用的,但是从它被调用的地方。输出中的单个连字符表明 main 函数中的 while 循环仅迭代一次。但为什么只有一次。我期待像aa-aa-aa-aa-aa-这样的输出