Java输入输出
每一个编程语言都会涉及到输入输出的问题,只有能够输入输出我们才能够得到我们想要的结果。
输入
Java的输入需要使用到Scanner类,这个类存在于util包中,在输入的时候需要导入Scanner类包;因为类只是一个抽象的概念,要使用就要创建对象以此来控制实例;这就是类别和个体之间的关系,比如狗是一个类别,而什么品种的狗狗就是一个个体;
import java.util.Scanner;
Scanner scanner = new Scanner(System.in)
int ret = scanner.nextInt();
Scanner是类型,scanner是对象名,new Scanner()是调用,System.in是输入意思.
在创建scanner对象之后用对象名声明一个int类型的变量,使用nextInt();以此类推声明double类型变量使用nextDouble();
但有一个是比较特殊的,那就是String类型变量,只需要是用next()即可;
String str = scanner.next();
nextLine()的作用
在上述各个声明变量的方法都是以空格等等作为结束标记的,那如果我要得到"游鱼 优秀"这样的字符串怎么办呢,寻常输入在读取到“游鱼”时便结束了,因为后面便是空格;
这个时候就要使用到nextLine(),它的结束标志只有一个——换行符
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
System.out.println(str);
游鱼 优秀
游鱼 优秀
与next对比
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println(str);
游鱼 优秀
游鱼
输出
Java的输出多样化,总有四种形式
System.out.println();//第一
System.out.print();//第二
System.out.printf("printf:%s ", str);//第三
System.out.format("format:%s ", str);//第四
请输入:>游鱼优秀
游鱼优秀
游鱼优秀printf:游鱼优秀 format:游鱼优秀
这四个输出格式当中,System.out功能都是相同的,都是表示输出的意思,不一样的地方在于后面的方法;
println()为换行输出,即在输出结果之后自动换行;
print()为不换行输出,就是在书结果之后不换行;
printf()和fromat()两个基本上是一样的,和C语言中的printf()一样都是格式化输出。
习题
猜数字游戏
猜数字游戏是在学习输入输出之后应用的最好例子,较为简单易上手.
首先,猜数字我们要系统随机给出数字让我们来猜才行,在Java中选取随机数的类为Random();
同样的,在使用前要想调用类包Java.util.Random,其次再是使用类名来创建对象,我这个代码的对象为r;
值得注意的是,Random r = new Random(seed:),当中的seed是要填一个种子(一般在使用的时候不填,在此只是说明);
计算机中使用的随机数都是“伪随机数”,即都是根据数学公式所给出来的随机数列;seed就是这个随机数列的起始值,一般在使用Random()的时候我们一般不填.
import java.util.Random;
Random r = new Random();
//不加1的i区间范围[0, 99);
int i = r.nextInt(100) + 1;
第二步即调用Scanner类并创建对象以此输入我们所猜的数字;
import java.util.Scanner;
Scanner s = new Scanner(System.in);
int guess = s.nextInt();
第三步根据我们所猜的数字给出是否猜对了数字,猜对了break结束循环;猜错了根据所猜数字判断是大是小并给出范围;
if(guess < 0 || guess > 100){
System.out.println("请输入1~100的数字!");
continue;
}
//判断玩家猜的对不对
if(guess == i){
System.out.println("恭喜你,猜对了!");
break;
} else if(guess > i){
System.out.println("猜大了!数字在" + left +"和" + guess + "之间");
} else if(guess < i){
System.out.println("猜小了!数字在" + guess +"和" + right + "之间");
}
范围是跟据所猜数字而给出的一个范围,而当猜的数字小的时候,我们便调整left以缩小左边区间的范围;同理当猜大时,调整right的值以缩小右边的值;
if(guess < i){
left = guess;
} else{
right = guess;
具体代码如下:
import java.util.Random;
import java.util.Scanner;
public class GuessNumber {
public static void main(String[] args) {
//取随机数作为要被猜的数据
Random r = new Random();
//不加1的i区间范围[0, 99);
int i = r.nextInt(100) + 1;
// System.out.println(i);
//猜数字的过程
// 使用Scanner输入玩家猜的数字
Scanner s = new Scanner(System.in);
int left = 0;
int right = 100;
while(true){
System.out.print("请输入你心中的数字:>");
int guess = s.nextInt();
if(guess < 0 || guess > 100){
System.out.println("请输入1~100的数字!");
continue;
}
//判断玩家猜的对不对
if(guess == i){
System.out.println("恭喜你,猜对了!");
break;
} else if(guess > i){
System.out.println("猜大了!数字在" + left +"和" + guess + "之间");
} else if(guess < i){
System.out.println("猜小了!数字在" + guess +"和" + right + "之间");
}
//left guess1 i guess2 right
//当所猜的数guees1要小于i的时候,这个时候是猜小了,那么我们就是left变成guess1,以此来缩小范围
//当所猜的数guees1要大于i的时候,我们就是使right变成guess2来缩小范围,,
//这样不会因为改变某个数而造成数据交错
//如果两个都改变的话,那么连续两次猜大或猜小的时候会导致范围都到了所猜数字i的大于边或者小于边
//
if(guess < i){
left = guess;
} else{
right = guess;
}
}
}
}