在很多的问题中我们会发现:在使用Scanner这个类的时候会遇到很多的问题
比如说我们需要用户输入4个数字;怎么样去实现呢?
很多人可能会说用for循环鸭来个for(int i=0;i<4;i++)这不久实现了吗?这还不简单;确实这是一个办法,但是如果用户没有输入4个数字而是输入3个数组怎么办?
那不就进去了for的死循环中出不来了吗?
那么这个由于用户故意或者失误少输入了数组而导致一直在循环体中出不来的问题我们应该怎么去解决呢?
Scanner语句中的几个给力转型方法:
J在许多问题中我们需要用户去输入多个数字
新萌可能就直接要输入多少个数就写多少(该文章以三个数举例)个如( int a=sc.nextInt(); )这样的代码;
代码如下
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
}
}
还有同学的会创建一个数组再使用for循环,将要输入的数组放到里面
代码如下:
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int[] arr=new int[3]; //这里给的3你也可以换成一个输入的数字
for(int i=0;i<3;i++){ //这里i<(小于的数)你也可以换成之前输入的数字
arr[i]=sc.nextInt();
}
}
}
但是这些方法并不是很好用,使用这种来接受输入的数字的话用户就必须要输入对应多的数字才行,不然的话程序就根本不能继续往下执行,
那么我们应该如何去解决呢
因为Java的Scanner语句没有想C语言种的scanf语句那么的"死版"(其实相对来说就是会变得很灵活);
所以在面对许多数字输入的时候,可能因为用户忘记少输入了数字而导致一直不出结果的尴尬情况;
我们有以下的处理方式
public class 测试数据_2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str = sc.nextLine(); //我们直接输入一个带空格或带逗号的字符串
String[] s=str.split(" ");//将这个字符串转换为字符串数组,这里我是以空格的方式来截取,split是字符串中的一个方法,简单的来说就是将字符串截断的,详细解释你可以去查找API或者看源码
int[] arr=new int[s.length];//这里我们在去创建一个数组来接收,和上面的第二个一样的思路
for(int i=0;i<s.length;i++){
arr[i]=Integer.parseInt(s[i]);//再将字符串中对应地址的数字转换成int整型的类型 注意这里给的字符串必须是一串整型的数字,不然是转化不了的,你要是只用用字符串也就没输入数字这一说了
}
for (int a:arr){
System.out.print(a+" ");//这里使用了for循环加强 我们可以遍历出来看一下
}
}
}
该方法非常适应加强代码的一个健壮性.