最近参加了一些笔试,很久没有使用system.in的原因,一开始拿到题目连数据的输入都不知道怎么解决,在数据的输入和数据的转换上花了了很长时间。在两个月中参加了几次笔试后总结了一些题目输入数据的常见类型和解决办法,因此下面讲讲笔试过程中常见的数据输入类型和输入方法,欢迎补充。
1、数据的输入方式
在笔试中,数据的输入方式以键盘输入为主,并且一般使用System.in标准输入流。它的实例代码为:
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
Scanner类封装了很多不同类型的数据输入函数,而笔试中常常使用的数据类型为int,double,String类型分别对应nextInt(),nextDouble(),nextLine()三个函数,另外char类型也常常使用,但他并没有对应的输入方法,它可以通过nextLine()函数获得一个字符串然后再通过String类型的的toCharArray()函数转化为char类型。
2、常见的数据输入类型
输入一个整数。例如:输入整数n计算n的阶乘。
输入一个浮点数。例如:输入单位价格n(double浮点数)计算m单位的花费。
输入一行字符,并根据字符及顺序进行不同的操作。例如输入wsad分别实现上下左右。
输入一行整数,数量有时确定有时不定。例如对一行无序整数序列进行排序。注意最后一个数字后是回车。
输入一行浮点数,数量有时确定有时不确定。例如对一行无序浮点数序列进行排序。注意最后一个字符后是回车。
输入一个矩阵,矩阵的长度和宽度不定。例如以邻接矩阵的形式输入一个图。
其它的输入方式大体都可以通过以上的类型组合输入。
3、java实现示例
import java.util.ArrayList;
import java.util.Scanner;
public class Input {
//输入一个整数
public void anInt(){
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个整数: ");
int number=sc.nextInt();
System.out.println("输入的数字是: "+number);
}
//输入一个浮点数
public void aDouble(){
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个浮点数: ");
double number=sc.nextDouble();
System.out.println("输入的数字是: "+number);
}
//输入一行字符,并根据字符做相应的动作
public void aLine(){
Scanner sc = new Scanner(System.in);
System.out.print("请输入一行字符:");
String aline=sc.nextLine();
char [] word=aline.toCharArray();
for(int i=0;i<aline.length();i++){
switch(word[i]){
case ('w'):{
System.out.print("输入的字符是: w ");
break;
}
case('s'):{
System.out.println("输入的字符是: s");
break;
}
case('a'):{
System.out.println("输入的字符是: a");
break;
}
case('d'):{
System.out.println("输入的字符是: d");
break;
}
default:{
System.out.println("输入了其它字符");
}
}
}
}
//输入一行整数,这种情况是最常见的,需要进行类型转换
public void aLineInt(){
Scanner sc =new Scanner(System.in);
System.out.print("请输入一行整数使用空格分离:");
String aline=sc.nextLine();
ArrayList alinenumber=new ArrayList();//转换成整型放到
int pre=0;//扫描指针
int i=0;
int temp=0;
for (i = 0; i < aline.length(); i++) {
if (aline.charAt(i) == ' ') {
temp = Integer.parseInt(aline.substring(pre, i));
alinenumber.add(temp);
pre = i + 1;
}
}
temp = Integer.parseInt(aline.substring(pre, i));//跳出循环时可能还有一个数字
alinenumber.add(temp);
System.out.print("输入的数字序列:");
for(i=0;i<alinenumber.size();i++)
System.out.print((int)alinenumber.get(i)+" ");
System.out.println();
}
//输入一行浮点数,需要进行类型转换
public void aLineDouble(){
Scanner sc =new Scanner(System.in);
System.out.print("请输入一行浮点数使用空格分离:");
String aline=sc.nextLine();
ArrayList alinenumber=new ArrayList();//转换成整型放到
int pre=0;//扫描指针
int i=0;
double temp=0;
for (i = 0; i < aline.length(); i++) {
if (aline.charAt(i) == ' ') {
temp = Double.parseDouble(aline.substring(pre, i));
alinenumber.add(temp);
pre = i + 1;
}
}
temp = Double.parseDouble(aline.substring(pre, i));//跳出循环时可能还有一个数字
alinenumber.add(temp);
System.out.print("输入的浮点数为:");
for(i=0;i<alinenumber.size();i++)
System.out.print((Double)alinenumber.get(i)+" ");
System.out.println();
}
//输入一个整数矩阵,矩阵的长度和宽度不确定,可以用于输入n*n的矩阵
public void aMatrix(){
Scanner sc = new Scanner(System.in);
ArrayList matrix=new ArrayList();//整个矩阵
ArrayList alinelist;//每一列
int length=0;//一列的长度
System.out.println("请输入一个矩阵:");
//获得下一行
while (sc.hasNextLine()) {
String str = sc.nextLine();
if (str.equals(""))//输入空行则完成输入,退出循环
break;
alinelist=new ArrayList();
int pre=0;//扫描指针
int i=0;
int temp=0;
for (i = 0; i < str.length(); i++) {
if (str.charAt(i) == ' ') {
temp = Integer.parseInt(str.substring(pre, i));
alinelist.add(temp);
pre = i + 1;
}
}
temp = Integer.parseInt(str.substring(pre, i));
alinelist.add(temp);
matrix.add(alinelist);
if(length<alinelist.size())
length=alinelist.size();
}
//复制到数组中
int array [] []=new int [matrix.size()][length];
//调用函数计算数量
for(int i=0;i<matrix.size();i++){
alinelist=(ArrayList) matrix.get(i);
for(int j=0;j<alinelist.size();j++){
array[i][j]=(int)alinelist.get(j);
System.out.print(array[i][j]+" ");
}
System.out.println();
}
}
}
请输入一个整数: 322412
输入的数字是: 322412
请输入一个浮点数: 67.7564
输入的数字是: 67.7564
请输入一行字符:wsdasga
输入的字符是: w
输入的字符是: s
输入的字符是: d
输入的字符是: a
输入的字符是: s
输入了其它字符
输入的字符是: a
请输入一行整数使用空格分离:2 3 523 23 1 343 1 135 23
输入的数字序列:2 3 523 23 1 343 1 135 23
请输入一行浮点数使用空格分离:345.32 243.12 2343.131
输入的浮点数为:345.32 243.12 2343.131
请输入一个矩阵:
2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8
2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8