从键盘输入值(char类型的转换)
//从键盘获取不同类型的变量
/*
第一步:导包
第二步:Scannner的实例化
第三步:调用Scanner类的相关方法,获取指定类型的变量
*/
import java.util.Scanner;
class transTest{
public static void main(String[] args){
Scanner scan = new Scanner(System.in); //实例化一个对象
String name = scan.next();
double a = scan.nextDouble();
long b = scan.nextLong();
boolean c = scan.nextBoolean();
int d = scan.nextInt();
//对于char类型的获取,scanner没有提供相关方法,只能获取字符串然后转换
String gender = scan.next();
char genderChar = gender.charAt(0); // charAt(index)
}
}
Math.random()
// 随机生成10-99之间的整数,利用到Math.random() , 但返回值是double型,且范围在[0.0,1.0)
class test{
public static void main(String[] args){
double value = Math.random(); // [0.0,1.0)
value = Math.random()*90; //[0.0,90.0)
value = Math.random()*90+10; //[10.0,100.0)
int value1 = (int)Math.random()*90+10; //[10,99)
int value2 = (int) (Math.random() * (b - a + 1)) + a; //生成[a,b]之间的整数
}
switch 语句
switch(表达式):表达式不能放Boolean类型的值
练习题
1.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, 其它的输
出 “other”。
提示:String word = scan.next(); char c = word.charAt(0); switch(c){}
import java.util.Scanner;
class transTest{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String word = scan.next();
char word1 = word.charAt(0);
switch (word1){
case 'a':
System.out.println('A');
break;
case 'b':
System.out.println('B');
break;
case 'c':
System.out.println('C');
break;
default:
System.out.println("other");
break;
}
}
}
2.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
import java.util.Scanner;
class score{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double score = scan.nextDouble();
// char word1 = word.charAt(0);
switch ((int)(score/60.0)){
case 0:
System.out.println("不及格");
break;
case 1:
System.out.println("及格");
break;
}
}
}
3. 编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序输出输入的日期为2019年的第几天。
import java.util.Scanner;
class countDay{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int month = scan.nextInt();
int day = scan.nextInt();
int sumDays = 0;
switch (month){
case 12:
sumDays += 31;
case 11:
sumDays += 31;
case 10:
sumDays += 30;
case 9:
sumDays += 31;
case 8:
sumDays += 31;
case 7:
sumDays += 30;
case 6:
sumDays += 31;
case 5:
sumDays += 30;
case 4:
sumDays += 31;
case 3:
sumDays += 28;
case 2:
sumDays += 31;
case 1:
sumDays += day;
}
System.out.println("2009年"+month+"月"+day+"日是当年的第"+sumDays+"天");
}
}
4、从键盘分别输入年、月、日,判断这一天是当年的第几天
注:判断一年是否是闰年的标准:
1)可以被4整除,但不可被100整除
或者
2)可以被400整除
import java.util.Scanner;
class countDay {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int year = scan.nextInt();
int month = scan.nextInt();
int day = scan.nextInt();
int sumDays = 0;
switch (month){
case 12:
sumDays += 31;
case 11:
sumDays += 31;
case 10:
sumDays += 30;
case 9:
sumDays += 31;
case 8:
sumDays += 31;
case 7:
sumDays += 30;
case 6:
sumDays += 31;
case 5:
sumDays += 30;
case 4:
sumDays += 31;
case 3:
if ((year % 4==0 && year % 100 !=0)|| (year % 400 ==0)){
sumDays += 29;
}else{
sumDays += 28;
}
case 2:
sumDays += 31;
case 1:
sumDays += day;
}
System.out.println(year+"年"+month+"月"+day+"日是当年的第"+sumDays+"天");
}
}
5、输入两个正整数m和n,求其最大公约数和最小公倍数。
比如:12和20的最大公约数是4,最小公倍数是60。
说明:break关键字的使用
import java.util.Scanner;
class dogsAge {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int m = scan.nextInt();
int n = scan.nextInt();
int min = (m < n)? m:n;
int max = (m > n)? m:n;
for (int i = min ; i >= 1 ; i--){
if(m % i ==0 && n % i ==0) {
System.out.println("最大公约数是"+ i);
break; //输出最大的,即最大公约数
}
}
for (int j = max;j<m*n;j++){
if (j % m==0 && j% n == 0){
System.out.println("最大公倍数是" + j);
break;
}
}
}
}
6、从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序
class countTest{
public static void main(String[] args){
Scanner scan = new Scanner(System.in); //实例化一个对象
int positiveNumber = 0;
int negativeNumber = 0;
while (true){
int number = scan.nextInt();
if (number > 0){
positiveNumber++;
}else if (number < 0){
negativeNumber++;
}else{
break;
}
}
System.out.println("正数的个数为"+positiveNumber+"个");
System.out.println("负数的个数为"+negativeNumber+"个");
}
}
7、嵌套循环输出九九乘法表
class mulTest{
public static void main(String[] args){
Scanner scan = new Scanner(System.in); //实例化一个对象
for (int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(i + "*" + j + "=" + (i * j) + " "); //采用不换行输出
}
System.out.println(); //换行
}
}
}
8、输出100以内所有的质数
class zhiShuTest{
public static void main(String[] args){
// Scanner scan = new Scanner(System.in); //实例化一个对象
// int num = scan.nextInt();
for (int i=2;i<=100;i++){ //最小的质数2开始遍历
boolean flag = true;
for (int j=2;j<i;j++){
if (i % j == 0){
flag = false; //能被1和本身之外的数整除,非质数,将flag=false
}
}
if (flag == true){
System.out.println(i);
}
}
}
}
//优化后的算法
class zhiShuTest{
public static void main(String[] args){
// Scanner scan = new Scanner(System.in); //实例化一个对象
// int num = scan.nextInt();
long start = System.currentTimeMillis(); //获取当前时间
for (int i=2;i<=100;i++){ //最小的质数2开始遍历
boolean flag = true;
for (int j=2;j<=Math.sqrt(i);j++){ //计算到根号i就可以
if (i % j == 0){
flag = false; //能被1和本身之外的数整除,非质数,将flag=false
break;
}
}
if (flag == true){
System.out.println(i);
}
}
long end = System.currentTimeMillis();
System.out.println("所花费的时间为"+ (end-start)); //计算执行花费时间
}
}
//采用label的写法
class zhiShuTest{
public static void main(String[] args){
// Scanner scan = new Scanner(System.in); //实例化一个对象
// int num = scan.nextInt();
long start = System.currentTimeMillis(); //获取当前时间
Label:for (int i=2;i<=1000;i++){ //最小的质数2开始遍历
boolean flag = true;
for (int j=2;j<=Math.sqrt(i);j++){ //计算到根号i就可以
if (i % j == 0){
continue Label; //结束指定标签的当层循环的当次循环 ,除尽,不是质数,则直接跳到下一个i
// break Label; //结束指定标签的当层循环
}
}
System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("所花费的时间为"+ (end-start)); //计算执行花费时间
}
}