黑马程序员技术交流社区
标题:
基础知识1
[打印本页]
作者:
郝明明
时间:
2015-1-22 23:13
标题:
基础知识1
import java.util.Scanner;
class IfScoreSeason
{
public static void main(String[] args)
{
/*
if结构的实例
1、根据成绩打印不同的成绩等级;
2、根据季节打印不同季节
总分析: 两者要做一下改善:即数据输入的时候要做一下检查,数据是否合法,可以利用函数改进一下,将判断过程进行封装
为了提高程序的交互性可以使用类Scanner来完成数据的输入,实现程序与用户的交互。
包导入格式:import java.util.Scanner;在class类之前导入;
*/
//对考试成绩的判断输出:100——80:优秀;79——61:一般;0——59:不及格
//定义一个变量保存从键盘中输入的数据
//由于Scanner是一个类,类的使用格式是:类名 变量名 = new 类名();
System.out.println("请输入一个成绩值:按enter键完成输入"); //给用户一个提示,使得系统的交互性更好
//完成数据的键盘输入并进行存储
Scanner enterIn1 = new Scanner(System.in); //?? 此处声明了一个Scanner对象,但是有一点不明白:后面括号中的System.in时什么意思??
int score=enterIn1.nextInt(); //利用创建的对象去调用Scanner类的方法:nextInt
String level=""; //定义一个字符串变量,用来存储变化的成绩水平值:优秀、一般、不及格
//根据分析可知;该判断过程要经过3次判断,更适合使用:if(){ } elseif(){ } .... else { }的格式
if(score>=80&&score<=100)
{
level="优秀"; //对前面定义的字符串变量进行赋值
}
else if(score>=60&&score<=79)
{
level="一般"; //根据不同的情况对level进行不同赋值
}
else if(score>=0&&score<=59)
{
level="不及格";
}
else //注意else后面没有( )
{
level="您输入的数据不合法,请重新输入";
}
//对判断的结果进行一下输出
System.out.println("成绩:"+score+" "+level);
/*
程序的扩展:1、上面关于成绩的判断中虽然有重新输入的提示,但是程序并未重新执行,还需要用户自己去执行,需要改进
2、对于数据合法性的判断应该在输入的时候就完成,不应该放在程序主体中
3、对于2的延伸,本程序的主要功能就是判断成绩的等级,这是一个功能,如果将非法数据的判断也放在其中,
就违背了。。。??
4、可以将判断这一个功能封装在一个函数中,这样只完成一个操作,可以提高复用性
新需求: 设计一个判断某个月时什么季节的程序,并加上:数据判断、函数封装
*/
//使用一个while语句和if语句的嵌套实现对输入数据循环判定
while(true)
{
System.out.println("请输入月份数据:"); //增加程序的交互性
//创建一个Scanner的对象,并定义一个int类型进行存储
Scanner enterIn2=new Scanner(System.in);
int temp1=enterIn2.nextInt();
/*
参考:
if(m<1 || m>12)
{
System.out.println("你输入的数据错误,请重新输入");
System.out.println();
continue;
}
else
{
//函数调用
System.out.println("月份:"+m+"月是"+panDuan(m));
break; //此处控制while循环的结束,如果注释掉,那么循环会一直进行下去!
}
*/
if(temp1>=1&temp1<=12)
{
//定义一个输出语句将结果输出
System.out.println("月份:"+temp1+" "+panDuan(temp1));
break; //当输入的数据合法,完成判断并且对结果进行输出后,跳出本循环体,继续执行循环体下面的程序
}
else
{
System.out.println("您输入的数据有误,请输入1——12之间的整数");
System.out.println();
continue; //当出现非法数据的时候,结束本次循环,但是不跳出循环体,继续执行下一次循环
}
}
}
/*
根据新需求构造一个函数只用于判断,月份的归属
思路:1、函数返回值类型的分析:该判断要对某个月属于哪个季节进行返回,类型定义为String
2、函数的参数列表:程序运行过程中只出现一种数据的传递,即将键盘输入的月份数据传递给自定义的函数
*/
public static String panDuan(int n)
{
String result=""; //用于存储函数的判断的结果,并利用return语句将它返回给调用函数
/*
if(n==3||n==4||n==5)
{
result="春季";
}
else if(n==6||n==7||n==8)
{
result="夏季";
}
else if(n==9||n==10||n==11)
{
result="秋季";
}
else
{
result="冬季";
}
*/
if(n>=3&n<=5)
{
result="春季";
}
else if(n>=6&n<=8)
{
result="夏季";
}
else if(n>=9&n<=11)
{
result="秋季";
}
else
{
result="冬季"; //利用方法的封装可以将问题进行简化,在此例题中由于冬季是12、1、2,在书写条件是必须写成n==12||n==1||n==2
} //其他月份由于是连续的数值所以可以使用n>=3&n<=5,这种形式,由于前面已经将数据进行了检查,传递过来的都是
return (result); //合法的数据,因此可以仅对春夏秋三个季节的数据进行判断,冬季使用else即可,省去了书写条件的麻烦
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2