java中从控制台输入(要怎样才能规定只能输入数字呢)希望能有源代码说明,我是新手!谢谢各位大虾
public static void main(String[] args) {
/** 写一个程序:从控制台输入,使之把字符串的数字给提炼出来
* 如:输入:“wa21ttw43p6ku5mm” 输出:214365 */
System.out.println("请输入:");
Scanner s = new Scanner(System.in);
String str = s.next();
String reg = "\\d";//正则表达式
StringBuffer result = new StringBuffer();
StringBuffer sb = new StringBuffer();
for(int i = 0;i < str.length();i++){
sb.append(str.charAt(i)).append("_");
}
String mes = sb.toString();
String[] data = mes.split("_");
for (String st : data) {
if(st.matches(reg)){
result.append(st);
}
}
System.out.println(result);
}
String reg = "\\d";//正则表达式
\\d这是什么意思啊
for (String st : data)
st 和 data之间是什么意识啊,有点不懂,能解释一下吗
\\d这是什么意思啊--这是正则表达式,'\d' 表示:任意数字类型 【0-9】,前面要用转义字符"\"转义一下--这就是“\\d”了
for (String st : data){
}这是JDK1.5以后提供的方法,就是迭代,遍历
用for()循环也可以
for(int i = 0;i < data.length;i++){
if(data[i].matches(reg)){
result.append(data[i]);
}
}
2024-07-18 广告
public class InputTest {
public static void main(String[] args){
try {
System.out.println(getNum());//调用这个函数获取数字
} catch (Exception ex) {
System.out.println("请输入数字!");
}
}
public static int getNum() throws Exception{
Scanner sc=new Scanner(System.in);
String str=sc.next();
assert str.matches("[-]?[\\d]+");
//使用断言,如果输入的符合正则表达式继续,否则抛出异常
return Integer.parseInt(str);
}
}
谢谢你的回答哈
matches("[-]?[\\d]+");你能帮我在解释一下里面的正则表达式吗
[-]?指的是有0个或者1个'-'符,即可以允许存在负号。
[\\d]+指的是必须要有一个或多个数字。