Java Utility

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
/**
* 工具类的作用:
* 处理各种情况的用户输入,并且能按照程序员对的需求,得到用户的控制台输入
*/

import java.util.Scanner;
import java.util.*;
public class Utility {
//静态属性
private static Scanner scanner = new Scanner(System.in);


/**
* 功能:读取键盘输入的一个菜单项,值:1-5范围
*/
public static char readMenuSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1, false);
c = str.charAt(0);//将字符串转换为字符
if (c != '1' && c != '2' && c != '3' && c != '4' && c != '5') {
System.out.println("选择错误,请重新输入:");
} else break;
}
return c;
}

/**
* 功能:读取键盘输入的一个字符
*/
public static char readChar() {
String str = readKeyBoard(1, false);//就是一个字符
return str.charAt(0);
}

/**
* 功能;读取键盘输入的一个字符,如果直接回车,则返回指定的默认值
* defaultValue 指定的默认值
* return 默认值或者输入的字符
*/
public static char readChar(char defaultValue) {
String str = readKeyBoard(1, true);//要么是空字符,要么??
return str.length() == 0 ? defaultValue : str.charAt(0);
}


/**
* 读取键盘输入的整型,长度少于两位
* return 整数
*/
public static int readInt() {
int n;
for (; ; ) {
String str = readKeyBoard(2, false);
try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.println("选择错误,请重新输入:");
}
}
return n;
}

/**
* 功能:读取键盘输入的整数或者默认值,如果直接回车,则返回默认值
* defaultValue 指定的默认值
* return 整数或者默认值
*/
public static int readInt(int defaultValue) {
int n;
for (; ; ) {
String str = readKeyBoard(2, false);
if (str.equals("")) {
return defaultValue;
}

try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.println("选择错误,请重新输入:");
}
}
return n;
}

/**
* 功能:读取键盘输入的指定长度的字符串
* limit:限制的长度
* return:指定长度的字符串
*/
public static String readString(int limit) {
return readKeyBoard(limit, false);
}

/**
* 功能:读取键盘输入的指定长度的字符串或者默认值,如果直接回车,返回默认值
* limit:限制的长度
* defaultValue 指定的默认值
* return 指定长度的字符串
*/
public static String readString(int limit, String defaultValue) {
String str = readKeyBoard(limit, true);
return str.equals("") ? defaultValue : str;
}

/**
* 功能:读取键盘输入的确认选项,Y或N
* 将小的功能,封装到一个方法中
* return Y/N
*/
public static char readConfirmSelection() {
System.out.println("请输入你的选择(Y/N)");
char c;
for (; ; ) {//无限循环
//在这里,将接收到字符,转换程大写字母
//y=>Y,n=>N
String str = readKeyBoard(1, false).toUpperCase();
c = str.charAt(0);
if (c == 'Y' || c == 'N') {
break;
} else {
System.out.print("选择错误,请重新输入:");
}
}
return c;
}

/**
* 功能:读取键盘输入,如果输入为空,或者输入大于limit的长度,就会提示重新输入
*/
private static String readKeyBoard(int limit, boolean blankReturn){
//定义了字符串
String line="";

//scanner.hasNextLine()判断有没有下一行
while (scanner.hasNextLine()){
line=scanner.nextLine();//读取下一行

//如果Line.length=0,即用户没有输入任何内容,直接回车
if(line.length()==0){
if(blankReturn) return line;
else continue;//如果blackRuturn=false,不接受空串,必须输入内容
}

//如果用户输入的内容大于了limit,就提示重写输入
//如果用户输入的内容哦个>0<=limit,我就接受
if(line.length()<1 || line.length()>limit){
System.out.println("输入长度(不大于 "+ limit + ")错误,请重新输入:");
continue;
}
break;
}
return line;
}

}