package triangle;
public class triangle {
public static void main(String[] args) {
for (int j = 1; j <= 9; j++) {
for (int i = 1; i <= 5; i++) {
System.out.print("* ");}
System.out.println();
}
}
}
最近在尝试做一些当初开始学习JAVA时的一些很基础的题目,同时也把以前没学完的CS61B从头又啃一遍。
很多东西经过长时间的沉淀,再次去领悟的时候获得的内容都与从前大不相同。
不过很惭愧的是,我的能力欠佳,所以一些简单的题目也花费了不小的时间,所以动笔把一些内容记录下来。
上面的代码片源于我第一次做HW0,这是老师布置的一个作业。
一:
package triangle;
public class triangle {
public static void main(String[] args) {
for (int j = 1; j <= 9; j++) { //for循环遍历,这个j表示输出的行数
for (int i = 1; i <= 5; i++) {//嵌套的循环,这个i表示输出的列数,这里表示一行有5个*
System.out.print("* ");}
System.out.println();
}
}
}
二:(靠左侧)
与输出矩形不同的一点时,如果要输出等腰直角三角形的话,要控制每一行每一列的*数与该行数字相同。
因此,j正常循环,表示输出的三角形的行数。
那么要保证i要与j一致,所以在嵌套的循环中,i将与j做比较。
package triangle;
public class triangle {
public static void main(String[] args) {
for (int j = 1; j <= 9; j++) {
for (int i = 1; i <= j; i++) {//嵌套中的循环i与j比较,j输出1时,i同时也输出1,保证了每行每列的*数都与该行对应数字相等。
System.out.print("* ");}
System.out.println();
}
}
}
还有一种情况是靠右侧的等腰直角三角形,我一开始的想法是,可以理解成输出一个包含(空格+号)的矩形:
以边长为3距离,第一行有2个空格+1个*号,其他行以此类推。
但是输出结果是这样的:输出了一条斜线,且这里有空行,应该是println的原因。
package triangle;
public class triangle {
public static void main(String[] args) {
for (int j = 1; j <= ; j++) {
for (int i = 1; i <= 3-j; i++) {
System.out.print(" ");}
System.out.print("*");
System.out.println();
}
}
}
改正后:
package triangle;
public class triangle {
public static void main(String[] args) {
for (int j = 1; j <= 3; j++) {
for (int i = 1; i <= 3-j; i++) {
System.out.print(" ");
}
for (int i = 1; i <= j; i++) {
System.out.print("*");//空号后面加入了*
}
System.out.println();
}
}
}
三:
package triangle;
public class triangle {
public static void main(String[] args) {
for (int j = 1; j <= 4; j++) {
for (int i = 1; i <= 4-j; i++) {
System.out.print(" ");
}
for (int i = 1; i <= j; i++) {
System.out.print("*");
}
for (int x =1; x <= j-1;x++) {//等腰三角形,从第二行开始添加一个比原先小一行规模的等腰直角三角形
System.out.print("*");//从空格后接上继续输出
}
System.out.println();
}
}
}
四:
倒三角,也可以从矩形的角度开始理解。
可以分为靠右倒三角,靠左倒三角,等腰倒三角。(全部以四行为例)
靠右倒三角为:
package triangle;
public class triangle {
public static void main(String[] args) {
for (int j = 1; j <= 4; j++) {
for (int i = 4; i >=j ; i--) {
System.out.print("*");
}
/** for (int x = 1; x <= j; x++) {
System.out.print(" ");
}
**/ //这里并不需要空格
System.out.println();
}
}
}
靠左倒三角为:
package triangle;
public class triangle {
public static void main(String[] args) {
for (int j = 1; j <= 4; j++) {
for (int x = 2; x <= j; x++) {
System.out.print(" ");//x从2开始,表示在第二行进行遍历循环输出空格,每行依次递增
}
for (int i = 4; i >=j ; i--) {
System.out.print("*");//空格之后输出*,搞清楚这些符号的数字关系
}
System.out.println();
}
}
}
等腰倒三角:
【插曲:在写代码的时候,误打误撞写出了输出平行四边形,代码如下(平行四边形)】:
是为矩形变体
package triangle;
public class triangle {
public static void main(String[] args) {
for (int j = 1; j <= 4; j++) {
for (int x = 2; x <= j; x++) {
System.out.print(" ");
}//整体输出一个靠右的等腰三角形
for (int i = 1; i <=3 ; i++) {//矩形变体4x3
System.out.print("*");
}
System.out.println();
}
}
}
等腰倒三角:
package triangle;
public class triangle {
public static void main(String[] args) {
for (int j = 1; j <= 4; j++) {
for (int x = 2; x <= j; x++) {
System.out.print(" ");
}
for (int i = 4; i >=j ; i--) {
System.out.print("*");
}//输出一个靠右倒三角
for(int a=3;a>=j;a--){
System.out.print("*");
}//再来一个小规模的靠左倒三角(3行)
System.out.println();
}
}
}
五:上下双拼三角形
package triangle;
public class triangle {
public static void main(String[] args) {
for (int j = 1; j <= 4; j++) {
for (int x = 3; x >= j; x--) {
System.out.print(" ");
}
for (int i = 1; i <= j; i++) {
System.out.print("*");
}
for (int x =1; x <= j-1;x++) {//等腰三角形,从第二行开始添加一个比原先小一行规模的等腰直角三角形
System.out.print("*");//从空格后接上继续输出
}
System.out.println();
}
for(int a=1;a<=3;a++){
for(int b=1;b<=a;b++){
System.out.print(" ");
}
for(int c=3;c>=a;c--){
System.out.print("*");
}//递减的规律是列要与行进行对比,而不是简单的数字对比。如果是c>=3,那么就成了平行四边形。
for(int c=1;c>=a-1;c--){
System.out.print("*");
}//这里拼接了一个原有规模(4行)小两次的三角形。
System.out.println();
}
}
}
最后这个代码过于冗杂,一直都是for循环嵌套,后面我会寻找简单的结构优化代码。