新人需要处理输入的字符串:
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求指导
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求指导
因为你s是通过system。in构造的
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 {
}}
useDelimiter(String pattern)
Sets this scanner's delimiting pattern to a pattern constructed from the specified String.定界,告诉scanner每一串想要的字符串是通过/分隔开的
按照4楼链接里的提示,ctrl + z 中断就好了
java输入流有什么方法可以只读一次输入吗?读到回车符就别再等着读了……