java代码求助,感觉两个if功能重复,如何优化,三目我试过编译错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java代码求助,感觉两个if功能重复,如何优化,三目我试过编译错误相关的知识,希望对你有一定的参考价值。

package src;
/*需求
* 1-先输入年,在输入月
* 2-计算一年又多少天
* 3-在输入年的时候或输入月的时候只要输入一次setup就退出*/
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class 计算一年天数

public static void main(String[]args)

Scanner shuru =new Scanner(System.in);
for(;;)


System.out.print("输入年");
String b =shuru.next();
if(b.equals("setup"))//

break;

System.out.print("输入月");
String b1 =shuru.next();
if(b1.equals("setup"))//重复代码

break;

//强转类型.parse类型(要转的类名)
int a =Integer.parseInt(b);
//强转 类名.toString();
//String a1 =b1.toString();
int a1 =Integer.parseInt(b1);
//判断年
boolean nian =(a%4==0&&a%100!=0)||a%400==0;
//判断31天的月份
boolean danyue =a1==1||a1==3||a1==5||a1==7||a1==8||a1==10||a1==12;
//判断不是31天的月份
boolean shuangyue =a1==4||a1==6||a1==9||a1==11;
//计算天天数
int daye=danyue?30:(shuangyue?31:(nian?29:29));
System.out.println(a+"年"+a1+"月"+daye+"天");



参考技术A 当一些代码实现的功能一样,且有相似地方即变量类型个数相同等,可以封装成类 或 方法即函数。这样可以使代码阅读性增强,代码优化。好像你这里的判断 可以写成一个方法,然后有参调用 就可以咯 参考技术B 用switch可以呀。。。追问

但是这个switch格式不是不接受数字和char以外的数据么。还有我这个接收按键shuru,写到switch(表达式)里的话是报错。如果把b或b1写进去,switch(表达式)这如何判断?

追答

哦,这样啊,应该是语法有问题,你类名最好用英文,虽说用中文可以,但是看起来怪怪的,那段//判断年
boolean nian =(a%4==0&&a%100!=0)||a%400==0;
//判断31天的月份
boolean danyue =a1==1||a1==3||a1==5||a1==7||a1==8||a1==10||a1==12;
//判断不是31天的月份
boolean shuangyue =a1==4||a1==6||a1==9||a1==11;
完全不知道你写的什么,你就不能分开一行一行的写,这样写,太难看了。
用while循环吧,比因for循环好,如果一旦输入"setup"就判断,然后break跳出while循环。
这个不能用switch,我一开始没认真看,不好意思。

参考技术C 用switch 结构来实现 看得出来你是新手吧、1追问

但是这个switch格式不是不接受数字和char以外的数据么。还有我这个接收按键shuru,写到switch(表达式)里的话是报错。如果把b或b1写进去,switch(表达式)这如何判断?

以上是关于java代码求助,感觉两个if功能重复,如何优化,三目我试过编译错误的主要内容,如果未能解决你的问题,请参考以下文章

Java 感觉在try语句中嵌套if语句不怎么美观,请问怎么优化

求助!pandas怎么实现vlookup功能,数据放在指定列里

求助,Java下载功能的代码怎么无法弹出浏览器的下载框?

java web开发,js自动刷新页面过一段时间后页面会崩溃,,,怎么办,,求助大神!!解决了给冲20话费~~

求助java编程题 两个灯泡 四个按钮 盒子

求助Oracle大表查询优化