最近在学习java,但是如何快速高效率的学习是个问题。每个人接收新事物的方式都不同,我属于自由在折腾中才能学会的人。从以前学习css,js来看,都是需要折腾才能把东西记住的。书看了真的不是那么容易记忆的。
首先折腾的第一个程序:
实现这个效果
*
***
*****
幸亏在之前自习看过js的面向对象编程方式,要不然对java的代码估计会一头雾水。很多java权威书都是基于你已经理解面向对象编程的基础上去写的,怪不得我之前看书看得云里雾里。
好了现在折腾这个效果:
1.建立一个demo的包
2.建立一个Yhsjx.java 的类(杨辉三角 其实这个效果只不过是看上去像杨辉三角而已 ,杨辉三角比这个复杂多了)
写第一段代码:
- package demo;
- public class Yhsjx {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- }
- }
这个就是java的基本代码。我站在从前端角度走过来的视角来看这个问题,首先,应为前端角色接触的js大部分都是流程编程,所以看到这个会觉得奇怪,为啥代码要匡到这些代码里面,不框这里面不行么。 框在这里面是干嘛用的。 其实这是我看到这个基本代码的一系列问题。
但是现在我是初学,依葫芦画瓢,这些问题都以后再理解,只要记住你代码就只能写在 这个基本代码里面。就可以了。
- package demo;
- public class Yhsjx {
- public static void main(String[] args) {
- String c = "*";
- for(int i =0; i < 3; i++){
- System.out.println(c);
- c+="**";
- }
- }
- }
这个输出结果是:
*
***
*****
这个输出在哪里? 在没学之前我就根本不知道这些打印是输出在那里的。像js里你可以输出在页面,也可以alert弹出。 在java里面这些输出会在console里面输出,也就是说他有一个现实信息的控制台。输出的信息在里面,另外错误信息 和警告都会在里面。
现在我们输出的 和我们想要的结果不一样,但是这个是最基础的 东西,所以解释下代码。首先定义一个变量 c 类型是String ;这个和js不一样,js是弱类型的,所有变量都可以直接用var 并以,但是java不行,你要用什么类型就得用什么关键字定义。 应为我输出的是字符,最开始我是用char来定义,写成 char c = "*";结果报错了,后来询问了才明白char类型定义的单个要用单引号......额在java里面还区分单引号和双引号的。后来jond(我公司的java程序员)让我改成用String类型。
然后是一个for循环,应为我要输出3行,所以我就循环输出咯。 这个循环结构和 js 的是一样的,不做多说。
最后我们在循环体里面打印字符,然后累加。
现在要走的就是把这些*对其。对其的话最简单就是补充空格了。做前端的千万别想着加一个css的居中属性就解决了,控制台是输出信息的,不能用css格式化·····
加空格就是算法的问题了, 我们要在第一行加2个空格,第2行加1个空格,第3行家0个空格。
- package demo;
- public class Yhsjx {
- public static void main(String[] args) {
- String c = "*";
- String k = "";
- for(int i = 0; i < 3; i ++){
- System.out.println(k + c);
- k += " ";
- c += "**";
- }
- }
- }
输出结果:
*
***
*****
显然,空格的输出是反了的, 我下想要的是 第一行2个,第三行0个,结果反过来了。 应为只有一个循环。所以我没有想到好的方法在一个循环里面解决这个问题。所以我想在这个循环里面存储数组,在下一个循环里面显示数据。
- package demo;
- public class Yhsjx {
- public static void main(String[] args) {
- String a = "";
- String b = "*";
- String[] k = new String[3];
- String[] c = new String[3];
- for(int i = 0; i < 3; i ++){
- k[i] = a;
- c[i] = b;
- a += " ";
- b += "**";
- }
- for(int i = 0;i < 3;i++){
- System.out.println(k[(3-1)-i]+c[i]);
- }
- }
- }
*
***
*****
现在就ok了哦
呵呵,下一步需要把 行数 用参数来调用。 所以需要把这个算法写成一个方法...现在要工作有空再写。




#1
