一、笔记
回顾:
流程控制语句之判断语句:
1.格式(长什么样)
2.流程(怎么运行的)
格式1:
if(判断条件){
语句块1;
}else{
语句块2;
}
流程:如果判断条件是对的,就执行语句块1,否则就执行语句块2
格式2:
if(判断1){
语句1;
}else if(判断2){
语句2;
}else if(判断3){
语句3;
}else if...{
语句...
}else{
语句4;
}
补充:
三元运算符(三目运算) 判断条件?值1:值2; 类似与if..else的简化版
判断字符串String类型是否相等,千万不能用==。用equals(String s)
equals(String s):该方法用来判断字符串的数据是否相等 括号里边传入需要比较的字符串
equals() 等同与 ==,只不过是用来判断字符串的。
循环:一段代码反反复复的执行
循环语句: for while do...while
1.格式:
for(初始化表达式 ; 判断条件 ; 循环后的表达式){
运行的代码;循环体;
}
2.流程:程序先执行初始化表达式-->判断条件[true:执行循环体-->循环后的表达式-->判断条件.....
false:循环结束]
【注】初始化表达式只在循环的第一次执行,且执行一次
例如:
for(int a = 1 ; a<=3 ; a++){
System.out.println("今天天气很好!----"+a);
}
for的第一次循环:int a = 1 -> a<=3(true)->输出语句 -> a++(2)->
for的第二次循环:a<=3(true) -> 输出语句 -> a++(3) ->
for的第三次循环:a<=3(true) -> 输出语句 -> a++(4) ->
for的第四次循环:a<=3(false) -> for循环停止
for循环嵌套
for( 初始化表达式1;判断条件1;循环后的表达式1){
for(初始化表达式2;判断条件2;循环后的表达式2){
循环体;
}
}
内层for循环相当于外层for循环的循环体.
外层for循环 循环一次,内层循环多次
二、老铁,干了这些题
1.计算个人所得税:
import java.util.Scanner;
public class JiaoSui {
public static void main(String[] args) {
/*根据用户输入的个人薪水来计算个人所得税(其中个人起征点为3500元)
全月应缴纳税所得额 税率
1500 3%
1500-4500 10%
4500-9000 20%
9000-35000 25%
35000-55000 30%
55000-80000 35%
80000 45%
*/
Scanner sc=new Scanner(System.in);
System.out.println("请输入您的薪水");
double salary=sc.nextDouble();
double amount;//应缴税额
if(salary<=3500){
System.out.println("您不用交税");
}else if(salary<=8000&&salary>5000){
amount=(salary-5000)*0.1+1500*0.03;
System.out.println("您的应缴税额为:"+amount);
}else if(salary<=12500&&salary>8000){
amount=(salary-3500-4500)*0.2+3000*0.1+1500*0.03;
System.out.println("您的应缴税额为:"+amount);
}else if(salary<=38500&&salary>12500){
amount=(salary-12500)*0.25+4500*0.2+3000*0.1+1500*0.03;
System.out.println("您的应缴税额为:"+amount);
}else if(salary<=58500&&salary>38500){
amount=(salary-38500)*0.3+26000*0.25+4500*0.2+3000*0.1+1500*0.03;
System.out.println("您的应缴税额为:"+amount);
}else if(salary<=83500&&salary>58500){
amount=(salary-58500)*0.35+20000*0.3+26000*0.25+4500*0.2+3000*0.1+1500*0.03;
System.out.println("您的应缴税额为:"+amount);
}else if(salary>83500){
amount=(salary-83500)*0.45+25000*0.35+20000*0.3+26000*0.25+4500*0.2+3000*0.1+1500*0.03;
System.out.println("您的应缴税额为:"+amount);
}else{
System.out.println("输入数值错误");
}
}
}
2.
写一个 简单的登录系统,只需要登录和退出即可。
import java.util.Scanner;
public class DengLu {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("欢迎光临大神购物系统");
System.out.println("1.登录");
System.out.println("2.退出");
for(int a=5;a>=1;a--){
System.out.println("请选择:");
int xuanze=sc.nextInt();
if(xuanze==1){
System.out.println("登录成功");
System.out.println("请输入用户名:");
System.out.println("请输入密码:");
String username=sc.next();
int password=sc.nextInt();
if(username.equals("jim")&&password==666666){
System.out.println("欢迎最强王者回归,请选择您的所需的物品");
}else{
System.out.println("输入错误,请检查后输入");
}
break;
}else if(xuanze==2){
System.out.println("谢谢使用,欢迎下次光临");
break;
}else {
System.out.println("输入错误,请重新输入!您还有"+(a-1)+"次机会");
}
}
}
}
3.键盘录入n个学生的成绩,求出平均成绩?
import java.util.Scanner;
public class ChenJi {
/*
键盘录入n个学生的成绩,求出平均成绩?
思路:
1.输入学生的成绩;
2.求出输入成绩的总分数,总分数除以输入成绩的学生总人数就是平均成绩
*/
public static void main(String[] args) {
double sum=0.0;
double avg;
Scanner sc=new Scanner(System.in);
System.out.println("请输入学生人数");
int num=sc.nextInt();
for(int i=1;i<=num;i++){
System.out.println("请输入学生"+i+"的成绩");
double score=sc.nextDouble();
sum+=score;
}
avg=(double) sum/num;
System.out.println("输入的"+num+"个学生的平均成绩是:"+avg);
}
}
4.计算1~100之间是3和7的倍数的数字有多少个?和是多少?平均数为?
public class ShuZi {
public static void main(String[] args) {
/*计算1~100之间是3和7的倍数的数字有多少个?和是多少?平均数为?
思路:
1.判断1-100之间是3和7的倍数的数字;
2.统计1-100之间是3和7的倍数的数字的个数有多少个,并计算这些数字的和;
3.用符合条件的数字总和除以符合条件的数字的总个数即可以求出它的平均值。
*/
int sum=0;
int amount =0;
double c=0.0;
for(int i=1;i<=100;i++){
if(i%3==0&&i%7==0){
sum=sum+i;
amount++;
}
c =(double) sum/amount;
}
System.out.println("1-100之间是3和7的倍数的数字的和是:"+sum+",个数有:"+amount+",平均值是:"+c);
}
}
5.下面代码的输出结果是:
public class test
{
static boolean foo(char c)
{
System.out.print(c);
return true;
}
public static void main( String[] argv )
{
int i =0;
for ( foo('A'); foo('B')&&(i <2); foo('C'))
{
i++ ;
foo('D');
}
}
}
答: 进入for循环的时候首先执行的是foo('A')这里输出A 其次执行foo(‘B’)输出B返回为真,判断I是不是小于2(i=0小于2)为真 执行i++; 执行foo(‘D’);输出D; 执行foo('C');输出C 第一次循环结束,开始第二次循环 第二次循环就不再执行foo(‘A’); 冲foo(‘B’)开始,输出B返回真,判断I是不是小于2(i=1小于2)为真 执行i++; 执行foo(‘D’);输出D 执行foo(‘C’)输出C 第二次循环结束 第三次开始 执行foo(‘B’)输出B返回真判断I是不是小于2(i=2不于2)为假循环结束 所以输出为ABDCBDCB
6.有一个数列:8,4,2,1,23,344,12
1)循环输出数列的值
2)求数列中所有数值的和
3)猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
int[] a={8,4,2,1,23,344,12};
int sum=0;
for(int i=0;i<a.length;i++){
System.out.print(a[i]+",");
sum+=a[i];
}
System.out.println();//换行
System.out.println("数列中所有数值的和:"+sum);
System.out.println("请任意输入一个数字:");
Scanner s=new Scanner(System.in);
int b=s.nextInt();
//用循环来判断判断数列中是否包含此数
for(int c:a){
if(b==c){
System.out.println("数列中包含此数"+b);
}
}
7.从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分
int[] score=new int[5];
System.out.println("请输入五位同学的成绩:");
Scanner s=new Scanner(System.in);
//从键盘输入本次Java考试五位学生的成绩,用for循环实现
for(int j=0;j<5;j++){
score[j]=s.nextInt();
}
int max=score[0];
for(int i=1;i<5;i++){
if(score[i]>max){
max=score[i];
}
}
System.out.println("最高分是:"+max);
8.打印九九乘法表
public class ForTest {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++){
for (int j = 1; j <= i; j++){
System.out.print(i + "*" + j + "=" + i*j + "\t");
}
System.out.println();
}
}
}
9.
从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个十进制数");
int i=sc.nextInt();
long j=1;long sum=0;
for (int n=i;n>0 ;n=n/2 ){
sum=sum+n%2*j;
j=j*10;
}
System.out.println(sum);
}
}
10.控制台输出三角形和菱形
for(int i=1;i<5;i++)
{
for(int j=1;j<i;j++)
{
System.out.print("*");
}
System.out.println(" ");
}
for(int i=1;i<=5;i++)
{
for(int j=1;j<=4+i;j++)
{
if(j<=5-i)
{
System.out.print(" ");
}
else
{
System.out.print("*");
}
}
System.out.println();
}
for(int k=1;k<=5;k++)
{
for(int g=1;g<=9-k;g++)
{
if(g<=k)
{
System.out.print(" ");
}
else
{
System.out.print("*");
}
}
System.out.println();
}