新人需要处理输入的字符串:
7/1 2 3/4 5 6/7 8 9/Scanner s = new Scanner(System.in).useDelimiter("\\s*/s*");
int m = s.nextInt(); //处理第一个int

if(m != 0){
//...
for(int n = 1; s.hasNext(); n++){
int v1,v2,v3;
String token;

token = s.next(); //把一组数据取出
Scanner triple = new Scanner(token);
v1 = triple.nextInt();
v2 = triple.nextInt();
v3 = triple.nextInt(); //...
}问题是s.hasNext始终返回true,然后程序停留在
token = s.next();
无法正常运行,等待用户输入看完sun的文档,没觉得有啥问题啊
http://java.sun.com/javase/6/docs/api/java/util/Scanner.html#hasNext%28%29求指导

解决方案 »

  1.   

    不要用for循环,用while循环,while(s.hasNext()){...}
      

  2.   

    是不是等待你输入啊?
    因为你s是通过system。in构造的
      

  3.   

    http://topic.csdn.net/u/20091203/19/5223cc86-18ad-43a7-9973-323e60f4a66d.html
      

  4.   

    for循环写的什么条件 难道没有像size length这样的属性
      

  5.   

    楼主参考下,Scanner用法。没用正则。
    package test;import java.io.*;
    import java.util.*;public class Test4Data { public static void main(String args[]) throws IOException {
    Test4Data td = new Test4Data();
    td.options();
    } public void options() { Model x = new Model();
    Scanner keyboard = new Scanner(System.in);
    System.out.println("请选择需要得到哪个Data的内容,输入数字1,2,3,4选择");
    System.out.println("1:HtmlData");
    System.out.println("2:JavaData");
    System.out.println("3:SqlData");
    System.out.println("4:C_Data");
    System.out.println("0:退出");
    while (keyboard.hasNext()) { int choose = 0;
    try {
    choose = keyboard.nextInt(); } catch (Exception e) {
    System.out.println("请选择需要得到哪个Data的内容,输入数字1,2,3,4选择");
    System.out.println("1:HtmlData");
    System.out.println("2:JavaData");
    System.out.println("3:SqlData");
    System.out.println("0:退出");
    keyboard.next();
    continue;
    }
    switch (choose) {
    case 1:
    Data hd = new HtmlData();
    hd.setWords(new String[] { "hWords" });
    hd.setChinese(new String[] { "hChinese" });
    x.setData(hd);
    x.printData();
    break;
    case 2:
    Data jd = new JavaData();
    jd.setWords(new String[] { "jWords" });
    jd.setChinese(new String[] { "jChinese" });
    x.setData(jd);
    x.printData();
    break;
    case 3:
    Data sd = new SqlData();
    sd.setWords(new String[] { "sWords" });
    sd.setChinese(new String[] { "sChinese" });
    x.setData(sd);
    x.printData();
    break;
    case 4:
    Data cd = new C_Data();
    cd.setWords(new String[] { "cWords" });
    cd.setChinese(new String[] { "cChinese" });
    x.setData(cd);
    x.printData();
    break;
    case 0:
    System.exit(0);
    default:
    System.out.println("请选择需要得到哪个Data的内容");
    break;
    }
    }
    } class Model {
    Data data; public void setData(Data d) {
    data = d;
    } public void printData() {
    System.out.println("words:" + data.getWordsContents());
    System.out.println("chinese:" + data.getChineseContents());
    }
    } class Data {
    String[] words; String[] chinese; public String[] getChinese() {
    return chinese;
    } public void setChinese(String[] chinese) {
    this.chinese = chinese;
    } public String[] getWords() {
    return words;
    } public void setWords(String[] words) {
    this.words = words;
    } public String getWordsContents() {
    String str = "";
    for (int i = 0; i < words.length; i++) {
    str += words[i] + " ";
    }
    return str;
    } public String getChineseContents() {
    String str = "";
    for (int i = 0; i < chinese.length; i++) {
    str += chinese[i] + " ";
    }
    return str;
    } } class HtmlData extends Data {
    } class JavaData extends Data {
    } class SqlData extends Data {
    } class C_Data extends Data {
    }}
      

  6.   


    useDelimiter(String pattern)
    Sets this scanner's delimiting pattern to a pattern constructed from the specified String.定界,告诉scanner每一串想要的字符串是通过/分隔开的
      

  7.   

    是system.in的问题
    按照4楼链接里的提示,ctrl + z 中断就好了
    java输入流有什么方法可以只读一次输入吗?读到回车符就别再等着读了……