没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
基本语法
使用Scanner从键盘获取数据
具体步骤:
1.导包:import java.util.Scanner;
2.Scanner的实例化:Scanner scanner = new Scanner(System.in);
3.调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量
获取一个随机数:10-99
import java.util.Scanner; //这一行是必须的添加的,导包
/*测试获得键盘输入*/
public class TestScanner {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); //System.in是I/O流对象
System.out.println("请输入名字:");
String name = scanner.nextLine(); //nextLine就可以获得输入的这一行文字
System.out.println("请输入爱好:");
String favor = scanner.nextLine();
System.out.println("请输入年龄:");
int age = scanner.nextInt(); //年龄是数字,所以nextInt即可
System.out.println("请输入体重:"); //浮点型数字
double weight = scanner.nextDouble();
System.out.println("你是否单身:"); //bool型
boolean single = scanner.nextBoolean();
System.out.println("############");
System.out.println(name);
System.out.println(favor);
System.out.println(age);
//对于char的获取,Scanner没有提供相关的方法,只能够获取一个字符串
System.out.println("请输入你的性别:(男/女)");
String gender = scanner.nextLine(); //"男"
char genderChar = gender.charAt(0); //如果真的要用char类型,获取索引为0位置上的字符
System.out.println(genderChar);
}
}
输入bool型变量,除了true/false,若用是/否 表示
switch-case语句案例
//如何获取一个随机数:10-99
int value = (int)(Math.random()*90 + 10);
//value取值是[0.0 , 1.0 )-> [10,100)->[10,99]
// (int)(xxxx) 强制转型
System.out.println(value);
//公式:[a,b] : (int)(Math.random()*(b-a+1)+a)
//方式一
System.out.println("请输入你是否单身:(true/false)");
boolean single = scanner.nextBoolean();
if(single)
System.out.println("你是单身狗");
else
System.out.println("祝你幸福");
//方式二
System.out.println("请输入你是否单身:(是/否)");
String single = scanner.nextLine();
if(single.equals("是")) //用equals() 来判断是否与字符串一致
System.out.println("你是单身狗");
else
System.out.println("祝你幸福");
/*
* 输入年月日,并判断是该年的第几天
*/
import java.util.Scanner;
public class switchcase {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入year");
int year = scanner.nextInt();
System.out.println("请输入month");
int month = scanner.nextInt();
System.out.println("请输入day");
int day = scanner.nextInt();
int sumDay = 0;
switch(month) {
case 12:
sumDay += 30;
case 11:
sumDay += 31;
case 10:
sumDay += 30;
case 9:
sumDay += 31;
case 8:
没有用case 1: sumDay = day; case 2:sumDay = 31+day;这样子是因为太过于冗余了
倒着写会效率更高。
for循环 质数的输出 (及算法的优化)
sumDay += 31;
case 7:
sumDay += 30;
case 6:
sumDay += 31;
case 5:
sumDay += 30;
case 4:
sumDay += 31;
case 3:
//判断闰年的2月有29天
if((year % 4 ==0 && year % 100 != 0) || year % 400 ==0 ) {
sumDay += 29;
}else {
sumDay += 28;
}
case 2:
sumDay += 31;
case 1:
sumDay += day;
}
System.out.println(year+"年的"+month+"月"+day+"日是这一年的第"+sumDay+"天");
}
}
/*
* 输出100000以内所有质数
* 最小的质数是2
*/
public class switchcase {
public static void main(String[] args) {
boolean isFlag = true;
//获取当前时间距离1970-01-01 00:00:00的毫秒数
long start = System.currentTimeMillis();
for(int i=2;i<=100000;i++) {
for(int j=2;j<i;j++) {
if(i % j == 0) { //i被j除尽
isFlag = false;
}
}
if(isFlag == true) {
System.out.println(i);
}
//重置isFlag
isFlag = true;
}
//获取当前时间距离1970-01-01 00:00:00的毫秒数
long end = System.currentTimeMillis();
System.out.println("所花费的时间是:"+(end-start));
ps: 所花费时间为 18733 ms
算法的优化:
ps: 优化后的时间为 103 ms (但其实最后的逐个输出也是会影响速度的,如果不逐个输出,只是计算个数的话,
速度会更快,优化效果更明显)
项目一:家庭收支记账软件
}
}
public class switchcase {
public static void main(String[] args) {
boolean isFlag = true;
//获取当前时间距离1970-01-01 00:00:00的毫秒数
long start = System.currentTimeMillis();
//优化三: 其实可以只取奇数进行判断,因为偶数除了2其余一定是非质的,但是时间复杂度仍然是同级,所以先不改
for(int i=2;i<=100000;i++) {
//优化二: 除数只取到i的根号,可以对质数的运算进行有效的优化
for(int j=2;j<=Math.sqrt(i);j++) {
if(i % j == 0) { //i被j除尽
isFlag = false;
break; //优化一 :对于非质数,若一旦被除尽,就break
}
}
if(isFlag == true) {
System.out.println(i);
}
//重置isFlag
isFlag = true;
}
//获取当前时间距离1970-01-01 00:00:00的毫秒数
long end = System.currentTimeMillis();
System.out.println("所花费的时间是:"+(end-start));
}
}
package shangguigu;
public class FamilyAccount {
public static void main(String[] args) {
boolean isFlag = true;
//用于记录用户的收入和支出的详情
String details = "收支\t账户金额\t收支金额\t说 明\n";
//初试金额
int balance = 10000;
while(isFlag) {
System.out.println("---------------家庭收支记账软件---------------\n");
System.out.println(" 1.收支明细");
System.out.println(" 2.登记收入");
System.out.println(" 3.登记支出");
System.out.println(" 4.退 出\n");
System.out.print(" 请选择(1-4):");
//获取用户的选择: 1-4
char selection = Utility.readMenuSelection();
switch(selection) {
case '1':
//System.out.println("1.收支明细");
System.out.println("---------------当前收支明细记录---------------");
System.out.println(details);
System.out.println("-----------------------------------------");
break;
case '2':
//System.out.println("2.登记收入");
System.out.println("本次收入金额:");
int addMoney = Utility.readNumber();
System.out.println("本次收入说明:");
String addInfo = Utility.readString();
//处理balance
balance += addMoney;
//处理details
details += ("收入\t" + balance + "\t" + addMoney + "\t" + addInfo + "\n");
System.out.println("——————————————————登记完成——————————————————");
break;
case '3':
//System.out.println("3.登记支出");
System.out.println("本次支出金额:");
int minusMoney = Utility.readNumber();
System.out.println("本次支出说明:");
String minusInfo = Utility.readString();
//处理balance
if(balance >= minusMoney) {
balance -= minusMoney;
}else {
System.out.println("支出超出账户额度,支付失败");
}
//处理details
details += ("支出\t" + balance + "\t" + minusMoney + "\t" + minusInfo + "\n");
System.out.println("——————————————————登记完成——————————————————");
break;
case '4':
System.out.println("确认是否退出(Y/N):");
char isExit = Utility.readConfirmSelection();
if(isExit == 'Y') {
isFlag = false;
}
剩余308页未读,继续阅读
资源评论
Eric加油学!
- 粉丝: 7140
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功