学Java脑子转不过来 经典小题提高你的Java逻辑
Java 中超简单的题
1、判断奇偶
public class Ti01 {
public static void main(String[] args) {
// 第一种方法 使用条件语句判断数字的奇偶。
int a = 10; // 声明变量一个 偶数
int d = 11; // 声明变量一个 奇数
// 条件语句判断奇偶
if(a % 2 == 0){ // if () 里面的条件表达式 为 true(真)执行里面的代码块。
System.out.println(a + "这个数字是偶数");
}else { //当if () 里面条件表达式为false (假)执行 else 里面的代码块。
System.out.println(a + "这个数字是奇数");
}
if(d % 2 == 0){ // if () 里面的条件表达式 为 true(真)执行里面的代码块。
System.out.println(d + "这个数字是偶数");
}else { //当if () 里面条件表达式为false (假)执行 else 里面的代码块。
System.out.println(d + "这个数字是奇数");
}
// 第二种写法 调用方法
if (p(a)){
System.out.println(a + "这个数字是偶数");
}else {
System.out.println(a + "这个数字是奇数");
}
if (p(d)){
System.out.println(d + "这个数字是偶数");
}else {
System.out.println(d + "这个数字是奇数");
}
}
// 使用方法 定义一个判断奇偶的方法,所有判断奇偶的数值可以在这个方法里使用。
public static boolean p(int a){
if (a % 2 == 0){
return true;
}else {
return false;
}
// 通过形参 a 将上面类局部变量的数值传到方法里,判断是偶数返回true,反之返回false。
}
}
结果
10这个数字是偶数
11这个数字是奇数
10这个数字是偶数
11这个数字是奇数
2、判断账号密码输入正确
import java.util.Scanner;
public class Ti02 {
public static void main(String[] args) {
// 输入账号密码,判断输入是否正确,输入错误则重新输入 最多只能输入三次 错误冻结账号。
String a = "123456"; // 设置一个 账户
int b = 654321; // 设置一个 密码
// 设置输入工具包
Scanner s = new Scanner(System.in);
// 输入错误重新输入 使用循环
for (int i = 0; i < 3; i++) {
// 输入的数据类型 要与声明变量的数据类型一致
System.out.print("请输入账号:");
String c = s.next(); // 输入字符串类型
System.out.print("请输入密码:");
int d = s.nextInt();// 输入整数型类型
// 因为要账号和密码都输入正确,所有c的值要与a的值一样,d的值要与b的值一样。
// if () 里要有两个条件表达式 并且值为 true 使用 && 判断两个表达式是否都为 true。
if ( a.equals(c) && b == d){ // equals 是字符串用来判断两个字符串是否相等,不能像 int 类型一样 使用 ==来判断相等。
System.out.println("账号密码输入正确");
break;
// 账号密码都输入正确,不用再次循环,break 就是用来结束循环的。
}else {
if (i == 2){ // 一个小条件,当输入错误为第三次时,打印出账号冻结,并退出循环。
System.out.println("账号密码输入不正确已达三次,请一小时后重新输入。");
break;
}
System.out.println("账号密码输入不正确,请重新输入");
}
}
}
}
输入正确结果
请输入账号:123456
请输入密码:654321
账号密码输入正确
输入错误三次结果
请输入账号:123
请输入密码:321
账号密码输入不正确,请重新输入
请输入账号:111
请输入密码:333
账号密码输入不正确,请重新输入
请输入账号:123456
请输入密码:123456
账号密码输入不正确已达三次,请一小时后重新输入。
Java 中亿点点 难度的题
1、问小明一年花了多少钱。
6公里(含)内3元;
6公里至12公里(含)4元;
12公里至22公里(含)5元;
22公里至32公里(含)6元;
32公里以上部分,
每增加1元可乘坐20公里
使用市政交通一卡通刷卡乘坐轨道交通,
每自然月内每张卡支出累计满100元以后的乘次,
价格给予8折优惠;满150元以后的乘次,
价格给予5折优惠;支出累计达到400元以后的乘次,不再享受打折优惠。
小明要坐一年地铁,每个月做的地铁的公里数不一样输入每月平均公里数,每个月还是60次,每个月的打折都重新算,问小明一年花了多少钱。
import java.util.Scanner;
public class Ti01 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
// 声明一个 浮点型的空变量 用来装每个月的总钱数。
float b1 = 0;
// 这个循环是用来输入12个月的次数
for (int i = 1; i <= 12; i++) {
// 公里数不同,每个月的钱数不一样 声明五个 浮点型的空变量 用来装当月的总钱数。
// 要写在第一个循环里面,因为要计算每个月,每次循环都需要清零来装新的数值,因此将每个月的钱数转到下面的 b1 里面。
float a = 0; // 当月平均6公里装的钱数
float a1 = 0;// 当月平均6公里到12公里装的钱数
float a2 = 0;// 当月平均12公里到22公里装的钱数
float a3 = 0;// 当月平均22公里到32公里装的钱数
float a4 = 0;// 当月平均大于32公里装的钱数 并且 没大20公里 额外加一元钱
System.out.print("输入"+i+"月平均做了多少公里:");
int yue = s.nextInt();
for (int j = 0; j < 60; j++) {
if (yue<=6&&yue>0){
if (a>=100&&a<150){ // 当本月钱到100~150之间时,打8折优惠
a += 3*0.8;//
}else if (a>=150 && a<400){ // 当本月钱到150~400之间时,打5折优惠
a += 3*0.5;
}else {
a += 3;
}
}else if (yue>6&&yue<=12){
if (a1>=100 && a1<150){ // 当本月钱到100~150之间时,打8折优惠
a1 += 4*0.8;
}else if (a1>=150 && a1<400){ // 当本月钱到150~400之间时,打5折优惠
a1 += 4*0.5;
}else {
a1 += 4;
}
}else if (yue>12&&yue<=22){
if (a2>=100&&a2<150){ // 当本月钱到100~150之间时,打8折优惠
a2 += 5*0.8;
}else if (a2>=150 && a2<400){ // 当本月钱到150~400之间时,打5折优惠
a2 += 5*0.5;
}else {
a2 += 5;
}
}else if (yue>22&&yue<=32){
if (a3>=100&&a3<150){ // 当本月钱到100~150之间时,打8折优惠
a3 += 6*0.8;
}else if (a3>=150 && a3<400){ // 当本月钱到150~400之间时,打5折优惠
a3 += 6*0.5;
}else {
a3 += 6;
}
}else if (yue>32 ){
if ((yue-32)%20 !=0 ){
if (a4>=100&&a4<150){ // 当本月钱到100~150之间时,打8折优惠
a4 += ((yue-32)/20+6+1)*0.8;
//当月平均大于32公里装的钱数 并且 没大20公里 额外加一元钱。
//输入当月的公里数,比如输入58。(58-32)/20 取整数就是1 输入77:(77-32)/20 取整数就是2
//这样每大于 20 公里 就想当与加了 1元。
}else if (a4>=150 && a4<400){ // 当本月钱到150~400之间时,打5折优惠
a4 += ((yue-32)/20+6+1)*0.5;
}else{
a4 += (yue-32)/20+6+1;
}
}else {
if (a4>=100&&a4<150){ // 当本月钱到100~150之间时,打8折优惠
a4 += ((yue-32)/20+6)*0.8;
}else if (a4>=150 && a4<400){ // 当本月钱到150~400之间时,打5折优惠
a4 += ((yue-32)/20+6)*0.5;
}else{
a4 += (yue-32)/20+6;
}
}
}else {
System.out.println("你输入的是个数字吗?");
}
}
b1 += (a+a1+a2+a3+a4);// 将每个月的总钱数都加到这里。最后求出一年花了多少钱。
System.out.println("到"+i+"月之前一共花了"+b1+"元");
}
}
}
结果
输入1月平均做了多少公里:6
到1月之前一共花了159.89995元
输入2月平均做了多少公里:10
到2月之前一共花了349.0999元
输入3月平均做了多少公里:12
到3月之前一共花了538.29987元
输入4月平均做了多少公里:14
到4月之前一共花了757.79987元
输入5月平均做了多少公里:16
到5月之前一共花了977.29987元
输入6月平均做了多少公里:20
到6月之前一共花了1196.7998元
输入7月平均做了多少公里:22
到7月之前一共花了1416.2998元
输入8月平均做了多少公里:24
到8月之前一共花了1665.2998元
输入9月平均做了多少公里:26
到9月之前一共花了1914.2998元
输入10月平均做了多少公里:30
到10月之前一共花了2163.2998元
输入11月平均做了多少公里:31
到11月之前一共花了2412.2998元
输入12月平均做了多少公里:58
到12月之前一共花了2723.4998元
2、小明每天跑5米,每当到3的倍数的当天,少跑了3米。请问小明多少天跑完100米
public class w01 {
public static void main(String[] args) {
// 声明2个变量,一个是天数,一个是多少米。
int a = 0; // 米
int b = 0; // 天
// 循环条件 当跑到100米后 结束循环
while (a<100){
a += 5; // 每天跑5米
b++; // 每天
// 当到3的倍数的当天,少跑3米
if (b % 3 ==0){
a -=3;
}
}
System.out.print("第"+ b + "天");
System.out.print("跑了"+a + "米");
}
}
结果
第25天跑了101米
3、输入一个数字,求这个数字后面最小的素数
import java.util.Scanner;
public class Ti03 {
public static void main(String[] args) {
// 输入一个数字,求这个数字后面的最小素数。
System.out.print("输入一个数字:");
Scanner s = new Scanner(System.in);
int a = s.nextInt();
while (true){
a = a + 1; // 因为要求这个数后面的最小素数,不加1的话会,输入的如果是素数,会直接判断这个素数是最小素数。
boolean b = true; // 设置一个布尔值,来帮助下面的判断。
for (int i = 2; i < a; i++) { // 2是最小的素数,所以我们直接从2开始判断。
if(a % i == 0){
b = false; //if里面用来判断这个数不是素数的话,进入代码块b就会变为false。如果是素数就不会进入这个代码块,b依然为true
break;
}
}
if(b){ //根据上面的判断,只有数字是素数的情况下。b才为true,进入这个判断的数字一定是素数。
System.out.println("后面的最小素数是"+a); // 进来的第一个素数一定是输入数字后面最小的素数,直接结束循环。
break;
}
}
}
}
结果
输入一个数字:3
后面的最小素数是5
总结:
前期学习Java很痛苦,因为它太吃逻辑了,每道题都是看了一眼就会,一作直接傻眼。上面的题都是平常学习时卡了不知道我几个小时的题,辛辛苦苦做不出来,结果上网一查,只有几行代码就完事…有时以为做出来了,看了答案直接傻眼,自己错了也不知道怎么改。尽管如此,也要大量的练习来提升自己的逻辑,后面的路依然很长,祝愿所有学习Java的人,早日学成,出去高薪就业。