从键盘获取值需要使用Scanner类
1.首先导包:import java.util.Scanner;
2.Scanner实例化:Scanner scan = new Scanner(System.in);
3.调用Scanner类的相关方法获取不同数据类型的值
import java.util.Scanner;
public class ScannerText {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int num = scan.nextInt(); //接收整型
String str = scan.next(); //接收字符串
double db = scan.nextDouble(); //接收浮点型
boolean bl = scan.nextBoolean(); //接收布尔型
}
}
if-else结构练习
1.键盘输入三个整数并将其排序,按从小到大的顺序输出
import java.util.Scanner;
public class IfText {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入三个整数:");
int num1 = scan.nextInt();
int num2 = scan.nextInt();
int num3 = scan.nextInt();
if (num1 >= num2) {
if (num3 >= num1)
System.out.println("从小到大的顺序为:" + num2 + "," + num1 + "," + num3);
else if (num3 >= num2)
System.out.println("从小到大的顺序为:" + num2 + "," + num3 + "," + num1);
else
System.out.println("从小到大的顺序为:" + num3 + "," + num2 + "," + num1);
}
else{
if (num3 >= num2)
System.out.println("从小到大的顺序为:" + num1 + "," + num2 + "," + num3);
else if (num1 >= num3)
System.out.println("从小到大的顺序为:" + num3 + "," + num1 + "," + num2);
else
System.out.println("从小到大的顺序为:" + num1 + "," + num3 + "," + num2);
}
}
}
2.我家的狗5岁了,5岁的狗相当于人类多大呢?其实,狗的前两年每 一年相当于人类的10.5岁,之后每增加一年就增加四岁。那么5岁的狗 相当于人类多少年龄呢?应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。
编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人 类的年龄。如果用户输入负数,请显示一个提示信息。
import java.util.Scanner;
public class IfText2 {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入狗狗年龄:");
int dogAge = scan.nextInt();
if(dogAge >= 0 && dogAge <= 2){
System.out.println("相当于人的年龄:" + dogAge * 10.5);
}else if( dogAge > 2){
System.out.println("相当于人的年龄:" + (2 * 10.5 + (dogAge - 2) * 4));
}else{
System.out.println("请输入正确的狗狗年龄!");
}
}
}
3.彩票问题。假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。
1)如果用户输入的数匹配彩票的实际顺序,奖金10000美元。
2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金3000美元。
3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1000美元。
4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。
首先涉及如何获取一个随机数,以获取10-99之间的任意一位两位数为例。
获取随机数需要使用Math.random()方法,该方法会获得一个在[0.0,1.0)之间的double类型的数。
此时得到的随机数区间并不是目标区间,则应在此基础上给该方法获得的区间进行加减乘除运算,以配出所需要的区间。
double value = Math.random(); //区间:[0.0,1.0)
double value = Math.random() * 90; //区间:[0.0,90.0)
double value = Math.random() * 90 + 10; //区间:[10.0,100.0)
根据以上的运算可以获得目标区间[10.0,100.0)。
由此可以得出规律:假如要获取在区间[a,b]中的随机数,可以对Math.random()方法乘以((b-a+1)+a),即可得出目标区间
完整代码如下
import java.util.Scanner;
public class TicketGame {
public static void main(String[] args){
int value = (int)(Math.random() * 90 + 10);
int valueShi = value/10;
int valueGe = value%10;
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个两位数:");
int number = scan.nextInt();
System.out.println("彩票随机数为:" + value);
int numberShi = number/10;
int numberGe = number%10;
if (number == value)
System.out.println("恭喜获得奖金10000美元");
else if (numberShi==valueGe && numberGe==valueShi)
System.out.println("恭喜获得奖金3000美元");
else if (numberShi==valueShi || numberGe==valueGe)
System.out.println("恭喜获得奖金1000美元");
else if (numberShi==valueGe || numberGe==valueShi)
System.out.println("恭喜获得奖金500美元");
else
System.out.println("很遗憾您并未中奖");
}
}