java基础篇之三--------运算符、扫描类Scanner、选择语句

习题:
1://求斐波切纳数列的前四十项

 public static int sum40() {
        //求斐波切纳数列的前四十项
        int sum40 = 0;
        int array[] = new int[40];//建立一个长度为40的数组
        array[0] = 0;
        array[1] = 1;
        array[1] = 1;
        //for循环,计算出来这个数列的前四十项数字;
        for (int i = 3; i <= 39; i++) {
            array[i] = array[i - 1] + array[i - 2];
            // System.out.println(array[i]);
        }
        for (int i = 0; i <= 39; i++) {
            sum40 += array[i];
        }
        return sum40;
    }

2://用for循环产生20个随机数,范围(10到20)

 public static void redom() {
        //用for循环产生20个随机数,范围(10到20)
        for (int i = 0; i < 10; i++) {
            double a = (Math.random() * 10) + 10;  // 定义一个多不了类型的a接收随机数;
            System.out.println("第" + i + 1 + "个随机数是" + a);
        }
    }

3:输入一个整数,输出他是几位数,并且正序反序输出:

 public static void bigOne(int n) { 
        //输入一个整数,输出他是几位数,并且正序反序输出:
        int i = 0, j = 1;
        while (j < n) {
            j = j * 10;
            i++;
        }
        System.out.println(n + "是个" + i + "位数");

        int a[] = new int[i];//创建和整数长度一样的数组
        int yuShu = n;  // 定义的余数
        for (int in = 1; in <= i; in++) {
            a[in - 1] = yuShu % 10;//,求10 的余数,得到此余数的个位数,然后从后往前存入数组a
            yuShu = yuShu / 10;//将余数依次除以10;得到下一个余数
        }
        System.out.print("反序:");  
        for (i = 0; i < a.length; i++) {     // 反序输出
            System.out.print(a[i] + "\t");  
        }
        System.out.println("\n");
        System.out.println("正序:" + n);    //   正序输出
    }

4: // 求一个整数的二进制中有几个1

  public static void hard(int n) {
//  求一个整数的二进制中有几个1
        //String s = String.valueOf(i);  这是将一串数字穿换成字符串

        int[] a = new int[8]; //循环,把原始数除以2取得余数,这个余数就是二进制数,原始的数等于商。
                                //商如果不能再除以二,结束循环。
        for (int i = 0; n > 1; i++) {
            int b = n % 2;//取得除以2的余数,
            n = n / 2;//数字赋值为除以2的商
            a[i] = b;//  将余数存入数组a中,
            if (n < 2) {  //已经不能再把数除以2,就把上直接放到数组的最后一位
                a[i + 1] = n;
            }
        }
        int index=0; 
        for (int i = a.length - 1; i >= 0; i--) {  // 循环输出
            System.out.print(a[i]);
            if (a[i] == 1) { // 如果数组内容等于1,就让计数器+1
                index++;
            }
        }
        System.out.println("\n"+index);  //输出
    }

1:运算符
(1) 条件与:&&
当两个变量都为true时,结果都为true,此运算符要注意的是,第二个操作数只有在必要的时候才计算!!(当第一个值 为true)
(2)条件或:||
当其中一个条件为true时,结果为true,同样需要注意的是,只有必要的时候才计算!!(当第一个值为false时计算第二个值)

public class TestDome1 {
   public static boolean loopYear() {
        Scanner scanner = new Scanner(System.in);
        int y = scanner.nextInt();
        if ((y % 4 == 0) && (y % 100 != 0) || y % 400 == 0) { // 只需要二者之一满足条件即可,但是若第一个条件已经满足,则不需要计算第二个条	
            return true;
        }
        return false;
    }  
        

(3)三目运算符: a> b ? c :d
其表示的意思是:a和b比较,如果为真,执行c,否则,执行d;

2:扫描类 Scanner
其 使用时;需要建立引用对象

Scanner scanner =new Scanner(System.in);
//  输出整数:
int a = scanner.nextInt(); //  但是其遇到空格就会停止
//输入字符串
String str=scanner.next(); // 同样遇到空格就会就会结束;
String str1=scanner.nextLine();  //  会识别空格,并将一行内的输入内容都扫描进去;

3: 循环语句:
(1) for循环
for(初始化设置表达式;循环执行条件 ;循环变量的增减条件){
循环语句序列 }
1:如果在for循环之前初始化循环变量,可以省略初始化表达式设置,
```
int i=1;
sum=0;
for(;i<=100;i++) {
sum+=i;
}
public static boolean isPrime() {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
for (int i = 2; i < a; i++) {
if (a % i == 0) {
return false;
}
}
return true;
}
`` `
2: :当三个条件都不写时默认为无限循环;
(2): while循环 : 在while先开始之前,并不知道循环语句的次数。

	 	while(条件表达式) {
	 	循环语句序列
}	 
`  ``
	(3):for each循环:用于枚举数组或者对象集合;
	for(数据类型  临时变量:数组或者集合){
	循环体语句序列;
}

int [] a={4,5,6,3,1,8,7 }
for( int i: a) {
System,out,println(a[i]);// 将数组a 依次打印出来
}

4:选择语句
(1)if...else
	if(条件表达式){
	语句1
}	else{
	语句2
}
此语句表示当表达式为真是执行语句1,否则,执行表达式2;而且可以嵌套多个if语句;
(2) switch语句:
switch(控制表达式) {
	case (常量表达式):语句1;
	break;
	case (常量表达式2):语句2;
	break;
	...
	case (常量表达式n) :语句n;
	break;
}
其中,long 、float、double 都不能做swith的参数类型;

public static void fun(char ch) {
switch (ch) {
case ‘A’:
System.out.println(“成绩是80-100之间”);
break;
case ‘B’:
System.out.println(“成绩是70-80之间”);
break;
case ‘C’:
System.out.println(“成绩是60-70之间”);
break;
case ‘D’:
System.out.println(“成绩是小于60”);
break;
default:
System.out.println(“请输入正确字符”);
break;
}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值