eclipse安装
官方首页
https://www.eclipse.org/downloads/
安装包下载
https://www.eclipse.org/downloads/packages
版本
语言包
安装运行
窗口显示
主要设置
键盘录入
概述
我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以我们需要把数据改进为键盘录入的,以提高程序的灵活性.
实现操作
1.导包
import java.util.Scanner;
2.创建对象
Scanner sc = new
Scanner(System.in);
3.接受数据
int x = sc.nextInt();
图片
思考:为什么点击enter后,出现两个一摸一样的.
练习
练习题
1.键盘录入两个int类型数据,并对这两个数据求和,输出其结果.
package java01;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int input1 = sc.nextInt();
int input2 = sc.nextInt();
int sum = input1 + input2;
System.out.println(sum);
}
}
2.键盘录入两个long类型数据,获取这两个数据中的最大值,输出其结果。
Scanner sc = new Scanner(System.in);
long input1 = sc.nextLong();
long input2 = sc.nextLong();
long max = (input1>input2)?input1:input2;
System.out.println(max);
3.键盘录入三个float类型,获取这三个数据中的最小值,输出其结果。
Scanner sc = new Scanner(System.in);
float input1 = sc.nextFloat();
float input2 = sc.nextFloat();
float input3 = sc.nextFloat();
float min = (input1<input2)&&(input2<input3)? input1:(input2<input3)?input2:input3;
System.out.println(min);
4.键盘录入两个byte类型数据,输出这两个值。
Scanner sc = new Scanner(System.in);
byte input1 = sc.nextByte();
float input2 = sc.nextByte();
System.out.println(input1);
System.out.println(input2);
注意
next()和nextLine()的区别:
next()方法在读取内容时,会过滤掉有效字符前面的无效字符,对输出有效字符之前遇到的空格键,Tab键或Enter键等结束符;next()方法会自动将其过滤掉;只有在读取到有效字符之后,next()方法才将其后的空格键,Tab键或Enter键等视为结束符;所以next()方法不能得到带空格的字符串.
nextLine()方法字面上有扫描一整行的意思,它的结束符只能是Enter键,即nextLine()方法返回的是Enter键之前没有被读取的所有字符,它是可以得到带空格的字符串的.
流程控制结构
概念
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能.
分类
顺序结构
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的.总的来说:写在前面的先执行,写在后面的后执行.
选择结构(分支结构)
选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码.
两种选择结构语句
if语句
第一种
第二种
第三种
注意
1.关系表达式无论简单还是复杂,结果必须是boolean类型
2.if语句控制的语句体如果是一条语句,大括号可以省略:如果是多条语句,就不能省略.建议永远不要省略.
思考:
练习题(第二种)
1.键盘录入数据,判断两个数是否相同,并输出结果.
Scanner sc = new Scanner(System.in);
int input1 = sc.nextInt();
int input2 = sc.nextInt();
if (input1 > input2) {
System.out.println(input1);
} else {
System.out.println(false);
}
2.键盘录入数据,输出两个数中较大的值,并输出结果.
Scanner sc = new Scanner(System.in);
int input1 = sc.nextInt();
int input2 = sc.nextInt();
if (input1 > input2) {
System.out.println(input1);
} else {
System.out.println(input2);
}
3.键盘录入数据,判断数据是奇数还是偶数.
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
if (input % 2 == 0) {
System.out.println("输入的数为:偶数");
} else {
System.out.println("输入的数为:奇数");
}
4.比较两个数据是否相等,获取两个数据中较大的值这两个案例,在三元运算符写一遍.
Scanner sc = new Scanner(System.in);
int input1 = sc.nextInt();
int input2 = sc.nextInt();
int input3 = sc.nextInt();
if (input1 > input2) {
if (input1 > input3) {
System.out.println("最大数为" + input1);
}
} else if (input2 > input3) {
System.out.println("最大数为" + input2);
} else {
System.out.println("最大数为" + input3);
}
练习题(第三种)
1.输入一个数
如果小于0,打印这个数是负数
如果等于0,打印这个数是0
如果大于0,打印这个数是正数
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
if (input < 0) {
System.out.println(input + "这个数是负数");
} else if (input > 0) {
System.out.println(input + "这个数是正数");
} else {
System.out.println("这个数是0");
}
2.键盘录入x的值,计算出y的并输出.
x和y的关系满足如下:
x>=3 y=2x+1;
-1<=x<1 y=2x;
x<-1 y=2x-1
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int y = 0;
if (x >= 3) {
y = 2 * x + 1;
} else if (x >= -1 && x < 1) {
y = 2 * x;
} else if (x < -1) {
y = 2 * x - 1;
}
System.out.println(y);
3.键盘录入月份的值,输出对应的季节.
3-5月为春季
6-8月为夏季
9-11月为秋季
12月-2月为冬季
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
if (month >= 3 && month <= 5) {
System.out.println(month + "月為春季");
} else if (month >= 6 && month <= 8) {
System.out.println(month + "月為夏季");
} else if (month >= 9 && month <= 11) {
System.out.println(month + "月為秋季");
} else if (month == 12 || month == 1 || month <= 2) {
System.out.println(month + "月為冬季");
}
4.键盘录入三个数据,然后获取最大值
Scanner sc = new Scanner(System.in);
int input1 = sc.nextInt();
int input2 = sc.nextInt();
int input3 = sc.nextInt();
if (input1 > input2) {
if (input1 > input3) {
System.out.println("最大数为" + input1);
}
} else if (input2 > input3) {
System.out.println("最大数为" + input2);
} else {
System.out.println("最大数为" + input3);
}
预留问题:随便输入任何数据类型的数据,如何保证程序依旧正常运行?
switch语句
注意点:
表达式的取值:byte,short,int,char
JDK7以后可以是String
练习题
1.根据键盘录入的数值1,2,3,…7输出对应的星期一,星期二,星期三…星期日.
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
switch (input) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期天");
break;
default:
System.out.println("您输入的有误");
break;
}
2.switch语句实现键盘录入月份,输出对应的季节
3-5月为春季
6-8月为夏季
9-11月为秋季
12月-2月为冬季
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
switch (input) {
case 3:
case 4:
case 5:
System.out.println("春");
break;
case 6:
case 7:
case 8:
System.out.println("夏");
break;
case 9:
case 10:
case 11:
System.out.println("秋");
break;
case 12:
case 1:
case 2:
System.out.println("冬");
break;
default:
System.out.println("您输入的有误");
break;
}
3.实现一个计算器
从键盘录入第一个数,运算的符号,第二个数,执行结果
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字");
int input1 = sc.nextInt();
System.out.println("请输入运算符+,-,*,/");
String input2 = sc.next();
System.out.println("请输入一个非零数字");
int input3 = sc.nextInt();
switch (input2) {
case "+":
System.out.println(input1 + "+" + input3 + "=" + (input1 + input3));
break;
case "-":
System.out.println(input1 + "-" + input3 + "=" + (input1 - input3));
break;
case "*":
System.out.println(input1 + "*" + input3 + "=" + (input1 * input3));
break;
case "/":
System.out.println(input1 + "/" + input3 + "=" + (input1 / input3 * 1.0));
break;
default:
System.out.println("这个我无法计算");
break;
}
1.next与nextLine的区别
字符串与int的键盘录入的两种处理方式
2.相除得小数,除数为0的两个问题的解决
使用场景
if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断
循环结构
概述
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环语句体,当反复执行这个循环语句体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环.
三种循环结构
for循环
练习题
for(int i = 0 ;i <10;i++) {
System.out.println("okk");
}
for(int i = 1 ;i <=10;i++) {
System.out.println(i);
}
for (int i = 10; i > 0; i--) {
System.out.println(i);
}
int sum = 0;
for (int i = 0; i <= 10; i++) {
sum = sum + i;
}
System.out.println(sum);
int sum = 0;
for (int i = 0; i <= 100; i++) {
if(i % 2 == 0 ) {
sum = sum + i;
}
}
System.out.println(sum);
int sum = 0;
for (int i = 0; i <= 100; i++) {
if(i % 2 == 1 ) {
sum = sum + i;
}
}
System.out.println(sum);
int count1 =0 ;
int count2 =0 ;
int count3 =0 ;
for (int i = 1; i <= 1000; i++) {
if(i % 3 == 2) {
count1++;
}else if (i % 5 == 3) {
count2++;
}else if (i % 7 == 2) {
count3++;
}
}
System.out.println("1-1000之间对3整除余2有"+count1+"个");
System.out.println("1-1000之间对5整除余3有"+count2+"个");
System.out.println("1-1000之间对7整除余2有"+count3+"个");
注意:
1.判断条件语句的结果是一个boolean类型
2.循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略.建议永远不要省略.
3.一般来说:有左大括号就没有分号,有分号就没有大括号.
while循环
int i = 0;
while (i < 10) {
i++;
System.out.println("okk");
int i = 0;
int sum = 0;
while (i <= 100) {
sum = sum + i;
i++;
}
System.out.println(sum);
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
int score = 0;
while (input == 1) {
score = score += 10;
input = sc.nextInt();
}
System.out.println(score);
double height = 0.12;
int foldCount = 0;
while (height < 48) {
height *= 2;
foldCount++;
}
System.out.println(foldCount);
do…while循环
int i=0;
do{
System.out.println("okk");
i++;
}while(i<10);
int j=0;
int sum = 0;
do{
j++;
sum+=j;
}while(j<=100);
System.out.println(sum);
Scanner sc = new Scanner(System.in);
String password = "5201314";//原始密码
String pwd ;
do{
System.out.println("请输入密码");
pwd = sc.nextLine();
if(!password.equals(pwd)){
System.out.println("密码错误,请重新输入");
}
}while(!password.equals(pwd));
System.out.println("登录成功");
for与while的区别
int evenCount = 0;
int singelCount = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
evenCount++;
} else {
singelCount++;
}
}
System.out.println("1-100的偶数有"+evenCount);
System.out.println("1-100的奇数有"+singelCount);
int money = 0;
int count = 0;
while(money<1024){
money +=5;
count ++;
}
System.out.println(count);
三种循环语句区别及注意事项
循环嵌套
练习题
输出一个4行5列的星星(*)图案
for(int i=0;i<4;i++){
for(int j=0;j<5;j++){
System.out.print("*");
}
System.out.println();
}
九九乘法表
for(int i=1;i<10;i++) {
for(int j =1;j<=i;j++) {
System.out.print(i+"x"+j+"="+i*j+"\t");
}
System.out.println();
}
如何循环的
跳转控制语句
概念:循环过程中达到某一条件的时候就结束循环
分类
break中断
作用:跳出单层循环
使用场景:
1.在选择结构switch语句中
2.在循环语句中
3.离开使用场景的存在没有任何意义
练习题:
小娟的妈妈每天给她3元钱,她都会存起来,但是每当这一天的天数是存钱的第六天或者是六的倍数的话,她都会花去5元钱,请问,经过多少天,小娟才可以存到100元钱.
static int sum_money = 0;
static int day = 0;
public static void main(String[] args){
while(true){
day++;
sum_money += 3;
if(day%6 == 0){
sum_money -= 5;
}
if(sum_money >= 100)
break;
}
System.out.println("需要"+day+"天小娟才能存到100元钱");
}
continue继续
作用:退出本次循环
使用场景:
1.在循环语句中
2.离开使用场景的存在是没有意义的
return返回
作用:关键字不是为了跳出循环体,更常用的功能是结束一个方法,也就是退出一个方法,跳转到上层调用的方法.
main方法的调用者是jvm