习题:
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;
}
}