编程思想
初学者最难的点就在于思维的转变。用人脑的思维和逻辑试着和电脑相处, 试着让电脑听懂我们说话,明白我们的心意。这个过程就仿佛在对电脑说“你吃了吗?”,电脑回你“阿巴阿巴阿巴…”!既然电脑无法理解我们,那我们就试着去理解它呗。怎么理解?欢迎了解计算机编程语言,欢迎了解计算机编程思维。
- 穷举法
在算法中, 穷举算法是最简单的一种算法,其依赖于计算机强大的计算能力,来穷举每一种可能的情况,以达到解决问题的目的。穷举法基本思想是逐一列举问题所涉及的所有情形,并根据问题提出的条件检验哪些是问题的解,哪些应予排除。
比如经典的计算100以内素数的问题,我们下意识就能想到应该从2开始,计算除1和它本身是否还有其他因数,没有就是素数,有就是合数,然后再计算下一个。是不是一目了然,清清楚楚? 那好恭喜你,这就是穷举法!
再比如经典的鸡兔同笼问题,鸡兔共35只,有脚94只。是不是下意识就要列二元一次方程组求解了?
x + y = 35
2x+4y = 94
解之得:
x=23
y=12
没错,方程列的漂亮,解得也很漂亮! 那你去给电脑说,让他理解理解?
从电脑角度看这个问题,会怎么样呢?就宛如还没学会方程的小学生
假如鸡有1只,那兔有34只,共138只脚,不符合,继续;
假如鸡有2只,那兔有33只,共136只脚,不符合,继续;
假如鸡有3只,那兔有32只,共134只脚,不符合,继续;
…
假如鸡有23只,那兔有12只,共94只脚,符合,成功!
如果还是没有理解,那也无需担心,三分理论七分实践,我们接着练!
变量
-
什么是变量?
变量就是可变的量;常量就是不可变的量。
怎么理解呢? 就仿佛是一个盒子,这个盒子本身没有任何东西,它只代表它可以容纳某种类型的数据,放一只猫进去,它就等于这只猫,放一只狗进去,它就等于这只狗! -
变量的命名
1.首字母是英文字母、$或下划线,有字母、数字、下划线组成
2.变量的命名遵循见名知意的原则
3.java变量名建议不用中文
4.变量名首字母建议不用大写字母
5.用驼峰命名法命名多个单词组成的变量名 例如:sumScore -
变量的定义
每个变量必须属于一种数据类型
类型 变量;比如:int age;String name; -
int和string
int:整型变量,属于基本类型,最小值是 -2,147,483,648(-2^31),最大值是 2,147,483,647(2^31 - 1),默认值是0;
string:创建和操作字符串,属于对象,默认值为null -
变量的初始化
先赋值 用 = 运算符 将=右边的值、运算的结果、变量赋值给左边的变量
比如:int age = 18; int sum = 1 + 1;int sum = sum + 1; -
运算符
算术运算符:+、-、*、/、++、–
关系运算符:==、>、<、>=、<=、!=
位运算符:&、|、^、〜、
逻辑运算符:&&、| |、!
赋值运算符:=
循环结构
- while 循环
while( 布尔表达式 ) {
//循环内容
}
- do…while 循环
do {
//代码语句
}while(布尔表达式);
- for 循环
for(初始化; 布尔表达式; 更新) {
//代码语句
}
关于 for 循环有以下几点说明:
最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
执行一次循环后,更新循环控制变量。
再次检测布尔表达式。循环执行上面的过程。
实战
枯燥的纸上谈兵终于结束,我写的都瞌睡了,下面开始实战!
- 判断101-200之间有多少个素数,并输出所有素数。
public static void main(String[] args) {
/**
* 判断101-200之间有多少个素数,并输出所有素数。
*/
int j;
for(int i=101;i<200;i++){
for(j=2;j<=i/2;j++){
if(i%j==0){
break;
}
}
if(j>i/2){
System.out.println(i+"是素数!");
}
}
}
- 打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
public static void main(String[] args) {
/**
* 水仙花数
*/
int i = 0, j = 0, k = 0;
for (int num = 100; num <= 999; num++) {
i = num / 100;
j = (num % 100) / 10;
k = num % 10;
if (num == i * i * i + j * j * j + k * k * k) {
System.out.println(num + "是水仙花数!");
}
}
}
153是水仙花数!
370是水仙花数!
371是水仙花数!
407是水仙花数!
- 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。
public static void main(String[] args) {
/**
* 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。
*/
int s;
for (int i = 1; i <= 1000; i++) {
s = 0;
for (int j = 1; j < i; j++) {
if (i % j == 0) {
s = s + j;
}
}
if (s == i) {
System.out.println(i + " ");
}
}
}
6
28
496
- 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
public static void main(String[] args) {
double s=0;
double t=100;
for(int i=1;i<=10;i++)
{
s+=t;
t=t/2;
}
System.out.println(s);
System.out.println(t);
}
199.8046875
0.09765625
- 输出9*9口诀。
public static void main(String[] args) {
int i = 0;
int j = 0;
for (i = 1; i <= 9; i++) {
for (j = 1; j <= 9; j++) {
if (j > i) {
continue;
}
System.out.print(j + "*" + i + "=" + i * j + "\t");
}
System.out.println();
}
}
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81