Java的输入 Scanner in=new Scanner(System.in);
java和c++还是有好多不同的地方,需要从头开始认认真真地学
文章目录
- 输入数字
- 输入double
- 输入整型
- 输入字符串
- 判断2个字符串是否相等
- Java的字符串要用""双引号引起来,而不是''单引号
- 输入一维数组
- 输入二维数组
输入数字
输入double
import java.util.Scanner;//输入头文件
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
double d=in.nextDouble();
System.out.println(d);
}
}
输入整型
import java.io.*;
import java.util.Scanner;//输入头文件
public class Main {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
int a = in.nextInt(); //调用in的nextInt函数来读入整型
int b = in.nextInt();
System.out.print(a+b+" ");
System.out.print(a*b+" ");
}
}
在上面的程序中可以看到一共调用了2次nextInt()函数,所以键盘会等待你输入2个整数。
如果输入多个整数,它只会取前2个数字。
注意:in.nextInt() 函数只能接受 int 型,不能输入double或者long等其他类型的数字,否则会报错。
对于其他输入的函数同样,nextDouble(), nextLong(), nextShort(), nextByte(), 都只能输入对应类型的数据,输入其他类型会报错。
输入字符串
输入字符串时要注意,因为Java是大小写严格的,所以String的S必须大写,虽然C++中string是小写的。
import java.io.*;
import java.util.Scanner;//输入头文件
public class Main {
public static void main(String args[]) {
Scanner in=new Scanner(System.in);
String s=in.nextLine(); //用 in 的 nextLine() 函数读入字符串
System.out.println(s);
}
}
运行结果:
判断2个字符串是否相等
String中有一个函数就是判断是否和另一个字符串相等 equals() ,括号中写入要比较的字符串
import java.io.*;
import java.util.Scanner;//输入头文件
public class Main {
public static void main(String args[]) {
Scanner in=new Scanner(System.in);
String s=in.nextLine();
if(s.equals("fantastic")) //使用了字符串的函数 equals() 来判断
System.out.println("极好的,了不起的");
}
}
运行结果:
(每次举例子不知道举什么,突然感觉举单词还不错,还可以加深印象,不错不错,一举两得)
Java的字符串要用""双引号引起来,而不是’'单引号
在Java中用英文下的单引号引起来的是一个字符,而不是字符串。
而且用单引号引起来的只能有一个字符,如果有多个字符,就会报错(只看红色的就可以)
翻译过来就是:字符字面上有太多字符。
但是如果用双引号引起来多个字符是不会报错的。
判断2个字符是否相等可以用==来判断
输入一维数组
import java.io.*;
import java.util.Scanner;//输入头文件
import java.util.Arrays; //引入数组类
public class Main {
public static void main(String args[]) {
Scanner in=new Scanner(System.in);
int a[]=new int [6];
for(int i=0;i<6;++i)
a[i]=in.nextInt(); //依次输入数据
Arrays.sort(a); //用数组的函数对数组排序,从小到大
System.out.println(a[5]+" "+a[0]);//输出数组的最大值和最小值
}
}
运行结果:
输入二维数组
代码:(我个人感觉还是看代码来的快,理解的快,一看就能很明白啊,一大堆解释对我来说不能很好的理解,还是看实例快一些)
import java.io.*;
import java.util.Scanner;//输入头文件
import java.util.Arrays;//引入数组类
public class Main {
public static void main(String args[]) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();//输入行数和列数
int m=in.nextInt();
int a[][]=new int[n][m];
in.nextLine(); //用来读掉回车前的所有字符,不将他们包括在数组的输入中
for(int i=0;i<a.length;++i){
for(int j=0;j<a[i].length;++j)
a[i][j]=in.nextInt();//输入每个元素
}
for(int i=0;i<a.length;++i){
for(int j=0;j<a[i].length;++j)
System.out.print(a[i][j]+" ");
System.out.println();
}
}
}
看一下运行结果:
2和3分别对应的是n和m,69559是我多输入的,主要是判断in.nextLint()是否可以读掉回车前的所有空格,确实读掉了,69559没有算在数组中的元素。
如果我们不写 in.nextLint() ,再这样输入,结果如下:
它没有忽略699559 (这里举的数不一样,但是没关系,道理一样),而最后一个5已经超出二维数组的范围了,所以没有读到。
Java的数组中都有一个 length() 函数,可以直接求出数组中元素的个数,这在C++中是没有的,有这个会方便一些。