这时关于接口方面的知识,只不过这段代码牵扯到后面还没学的一些内容,但是呢查了doc还是搞不懂,实在没办法问一下大家~~import java.nio.*;
import java.util.*;public class RandomWords implements Readable {
  private static Random rand = new Random(47);
  private static final char[] capitals =
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
  private static final char[] lowers =
    "abcdefghijklmnopqrstuvwxyz".toCharArray();
  private static final char[] vowels =
    "aeiou".toCharArray();
  private int count;
  public RandomWords(int count) { this.count = count; }
  public int read(CharBuffer cb) {    //标签1
    if(count-- == 0)
      return -1; // Indicates end of input
    cb.append(capitals[rand.nextInt(capitals.length)]);
    for(int i = 0; i < 4; i++) {
      cb.append(vowels[rand.nextInt(vowels.length)]);
      cb.append(lowers[rand.nextInt(lowers.length)]);
    }
    cb.append(" ");
    return 10; // Number of characters appended
  }
  public static void main(String[] args) {
    Scanner s = new Scanner(new RandomWords(10));  //标签2
    while(s.hasNext())
      System.out.println(s.next());
  }
}我想这段代码应该不难,只是关于Scanner类的用法不懂。标签1:
此处实现了Readable接口的read方法。因为看不懂的缘故,我都不知道整段程序在哪里调用了这个方法??标签2:
Scanner 的构造器接收了 RandomWords 对象但实际当中先进行了由 RandomWords 向上转型为 Readable 然后这个构造方法本身我就不明白了,按jdk上的理解应该是扫描这个对象,然而当 while(s.hasNext()) 为 true 时才执行方法体的语句,"如果此扫描器的输入中有另一个标记,则返回 true(jdk的解释这话怎么理解啊,看也看不懂)" 还有后面的 s.next() 这个方法 " 查找并返回来自此扫描器的下一个完整标记。(jdk的解释这话怎么理解啊,看也看不懂)"

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【llm0528】截止到2008-07-18 17:33:58的历史汇总数据(不包括此帖):
    发帖的总数量:56                       发帖的总分数:1120                     每贴平均分数:20                       
    回帖的总数量:48                       得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:56                       结贴的总分数:1120                     
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    你运行下  对照结果  研究一下
     while(s.hasNext())   //应该是有下一个就为true
          System.out.println(s.next());   //返回下一个
      

  3.   

    import java.nio.CharBuffer;
    import java.util.Random;
    import java.util.Scanner;public class RandomWords implements Readable { private static Random rand = new Random(47);
    private static final char[] capitals = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
    private static final char[] lowers = "abcdefghijklmnopqrstuvwxyz".toCharArray();
    private static final char[] vowels = "aeiou".toCharArray();
    private int count; public RandomWords(int count) {
    this.count = count;
    } public int read(CharBuffer cb) {  //标签1  当 s.next() 时 Scanner 内部会自动调用你的这个 read 方法
    if (count-- == 0) return -1;  //Indicates end of input
    cb.append(capitals[rand.nextInt(capitals.length)]);
    for (int i = 0; i < 4; i++) {
    cb.append(vowels[rand.nextInt(vowels.length)]);
    cb.append(lowers[rand.nextInt(lowers.length)]);
    }
    cb.append(" ");
    return 10;  //Number of characters appended
    } public static void main(String[] args) {
    Scanner s = new Scanner(new RandomWords(10));  //标签2 你还是先找个简单点的 Scanner 的例子看看吧
    while (s.hasNext()) System.out.println(s.next());  //这个对于你来说有点太复杂了
    }}
      

  4.   

    主要是我还没学到Scanner这部分书上就给了这么一个例子来阐述接口,但是因为没有看懂所以对接口那部分的知识点也没搞懂...原来这例子没我想得那么简单啊~~
      

  5.   

    Scanner构造函数里的参数是一个输入流
    得到流之后Scanner有next(下一个单词),nextLine(下一行),nextInt(下一个整数)等等方法.
      

  6.   

    首先要确认,在INDEX.JSP里提交Form时,请求能否到达MyJsp.jsp或SERVLET
      

  7.   

    read(CharBuffer cb)    试图将字符读入指定的字符缓冲区。
    nextInt(int n)    返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
    Scanner(Readable source)  构造一个新的 Scanner,它生成的值是从指定源扫描的。
    next()  查找并返回来自此扫描器的下一个完整标记。