Java中的基本数据类型
- /**
- * Java基本数据类型
- */
- package org.sean.module01;
- /**
- * @author 不落的太阳(Sean Yang)
- */
- public class BasicType {
- /**
- * 基本类型的自动提升
- *
- * 自动提升的规则如下:
- *
- * 如果两个操作数中有一个是double类型,则系统先将另一个操作数转换为double类型,然后运算,否则
- * 如果两个操作数中有一个是float类型,则系统先将另一个操作数转换为float类型,然后运算,否则
- * 如果两个操作数中有一个是long类型,则系统先将另一个操作数转换为long类型,然后运算,否则
- * 所有的操作数都被转换为int类型进行运算(低于int类型的会自动提升)
- *
- * 如果采用"+=","*="等缩略形式的运算符,则系统会强制将运算结果转换为目标变量类型。
- *
- */
- public static void typeAutoUppgrade() {
- char c = 'a';
- byte b = 44;
- short s = 1023;
- int i = 40000;
- long l = 1234L;
- float f = 35.6F;
- double d = 3.13D;
- double result = (b * f) + (f * l) + (i / c) - (d * s);
- System.out.println("自动类型提升的测试结果为" + result);
- @SuppressWarnings("unused")
- boolean flag = false;
- }
- /**
- * 基本类型的自动转换
- *
- * 自动类型转换的规则:
- *
- * 两种类型是兼容类型;目标类型的范围要比源类型的范围大
- */
- public static void autoChange() {
- char c = 'c';
- byte b = 44;
- short s = b;
- int i1 = s;
- int i2 = c;
- long l = i1;
- float f = l;
- double d = f;
- System.out.print("c=" + c + "\t");
- System.out.print("b=" + b + "\t");
- System.out.print("s=" + s + "\t");
- System.out.print("i1=" + i1 + "\t");
- System.out.print("i2=" + i2 + "\t");
- System.out.print("l=" + l + "\t");
- System.out.print("f=" + f + "\t");
- System.out.print("d=" + d + "\t");
- System.out.println();
- /**
- * 当float转换为double时,会出现不相等的情况
- *
- * 原因:float是32位的,double是64位的,在进行类型转换的时候,操作数都是以二进制的形式进行的,
- * 而浮点型无法用二进制精确表示,所以在类型转换时出现不相等的情况
- */
- float f2 = 1.7F;
- double d2 = f2;
- System.out.println("f2=" + f2 + "\t" + "d2=" + d2);
- float f3 = (float) d2;
- System.out.println("f3=" + f3);
- }
- /**
- * 基本类型的强制类型转换
- *
- * 强制类型转换的规则:
- *
- * 当两种类型不兼容或者,目标类型比源类型的范围小,就要进行强制类型转换
- *
- * 转化时会发生"截断取模"的现象
- */
- public static void forceChange() {
- double d = 123.45D;
- float f = (float) d;
- long l = (long) d;
- int i = (int) d;
- short s = (short) d;
- byte b = (byte) d;
- System.out.print("d=" + d + "\t");
- System.out.print("f=" + f + "\t");
- System.out.print("l=" + l + "\t");
- System.out.print("i=" + i + "\t");
- System.out.print("s=" + s + "\t");
- System.out.print("b=" + b + "\t");
- /**
- * 首先对d2进行截断操作,值变为567,然后对128进行取模,得到结果
- */
- double d2 = 567.8D;
- b = (byte) d2;
- System.out.println(b);
- }
- public static void main(String[] args) {
- BasicType.typeAutoUppgrade();
- BasicType.autoChange();
- BasicType.forceChange();
- }
- }
/**
* Java基本数据类型
*/
package org.sean.module01;
/**
* @author 不落的太阳(Sean Yang)
*/
public class BasicType {
/**
* 基本类型的自动提升
*
* 自动提升的规则如下:
*
* 如果两个操作数中有一个是double类型,则系统先将另一个操作数转换为double类型,然后运算,否则
* 如果两个操作数中有一个是float类型,则系统先将另一个操作数转换为float类型,然后运算,否则
* 如果两个操作数中有一个是long类型,则系统先将另一个操作数转换为long类型,然后运算,否则
* 所有的操作数都被转换为int类型进行运算(低于int类型的会自动提升)
*
* 如果采用"+=","*="等缩略形式的运算符,则系统会强制将运算结果转换为目标变量类型。
*
*/
public static void typeAutoUppgrade() {
char c = 'a';
byte b = 44;
short s = 1023;
int i = 40000;
long l = 1234L;
float f = 35.6F;
double d = 3.13D;
double result = (b * f) + (f * l) + (i / c) - (d * s);
System.out.println("自动类型提升的测试结果为" + result);
@SuppressWarnings("unused")
boolean flag = false;
}
/**
* 基本类型的自动转换
*
* 自动类型转换的规则:
*
* 两种类型是兼容类型;目标类型的范围要比源类型的范围大
*/
public static void autoChange() {
char c = 'c';
byte b = 44;
short s = b;
int i1 = s;
int i2 = c;
long l = i1;
float f = l;
double d = f;
System.out.print("c=" + c + "\t");
System.out.print("b=" + b + "\t");
System.out.print("s=" + s + "\t");
System.out.print("i1=" + i1 + "\t");
System.out.print("i2=" + i2 + "\t");
System.out.print("l=" + l + "\t");
System.out.print("f=" + f + "\t");
System.out.print("d=" + d + "\t");
System.out.println();
/**
* 当float转换为double时,会出现不相等的情况
*
* 原因:float是32位的,double是64位的,在进行类型转换的时候,操作数都是以二进制的形式进行的,
* 而浮点型无法用二进制精确表示,所以在类型转换时出现不相等的情况
*/
float f2 = 1.7F;
double d2 = f2;
System.out.println("f2=" + f2 + "\t" + "d2=" + d2);
float f3 = (float) d2;
System.out.println("f3=" + f3);
}
/**
* 基本类型的强制类型转换
*
* 强制类型转换的规则:
*
* 当两种类型不兼容或者,目标类型比源类型的范围小,就要进行强制类型转换
*
* 转化时会发生"截断取模"的现象
*/
public static void forceChange() {
double d = 123.45D;
float f = (float) d;
long l = (long) d;
int i = (int) d;
short s = (short) d;
byte b = (byte) d;
System.out.print("d=" + d + "\t");
System.out.print("f=" + f + "\t");
System.out.print("l=" + l + "\t");
System.out.print("i=" + i + "\t");
System.out.print("s=" + s + "\t");
System.out.print("b=" + b + "\t");
/**
* 首先对d2进行截断操作,值变为567,然后对128进行取模,得到结果
*/
double d2 = 567.8D;
b = (byte) d2;
System.out.println(b);
}
public static void main(String[] args) {
BasicType.typeAutoUppgrade();
BasicType.autoChange();
BasicType.forceChange();
}
}
Java中的运算符
- /**
- * Java中的运算符
- */
- package org.sean.module01;
- /**
- * @author 不落的太阳(Sean Yang)
- */
- public class Operator {
- /**
- * 算数运算符: +, -, *, /, %
- *
- * @param a
- * 左操作数
- * @param b
- * 右操作数
- */
- public static void ArithmeticOperator(int a, int b) {
- int result = a + b;
- System.out.println("a+b=" + result);
- /**
- * 当 * 号两边的数据类型为char,byte,short时,其均会转换为int进行运算 除此以外运算结果取决于两个操作数中范围较宽的类型
- *
- * 当乘法运算产生的结果发生数据溢出时,不会抛出ArithmeticException,只会出现精度丢失的情况
- */
- int mutiplyResult = a * b;
- System.out.println("a*b=" + mutiplyResult);
- /**
- * 对于除法运算,当 / 号两边数据类型为整型时,结果为整型(不管其能否被除尽)
- *
- * 当 / 号两边数据有一个是浮点型,结果为浮点型
- *
- * 如果左操作数为整型,当 / 号的右操作数为0时,会抛出ArithmeticException
- *
- * 如果左操作数为浮点型,当 / 号的右操作数为0时,不会抛出异常
- *
- * 常见结果有三种:Infinity; -Infinity; NaN
- *
- * Infinity ---> 2.0/0 -Infinity ---> -2.0/0 NaN ---> 0.0/0; 0.0/0.0; 0/0.0
- */
- int divideResult = a / b;
- System.out.println("a/b=" + divideResult);
- /**
- * 判断是否为NaN
- */
- System.out.println("0.0/0.0 is NaN:" + Double.isNaN(0.0/0.0));
- /**
- * 对于取模运算:实质是用左操作数连续减去右操作数,直到相减的结果小于右操作数,此时结果即为余数
- *
- * 当取模运算中有负数作为操作数的时候,取模运算结果的符号取决于左操作数的符号
- *
- * 如果左操作数为整型,当 % 符号的右操作数为0时,会抛出ArithmeticException
- *
- * 如果左操作数为浮点型,当 % 符号右操作数为0时,不会抛出异常,
- *
- * NaN :2.0%0; -2.0%0; 0.0%0; 0%0; 0%0.0
- */
- int modResult = a % b;
- System.out.println("a%b=" + modResult);
- }
- /**
- * 比较运算符: ==, !=, <, <=, >, >=,
- *
- * @param a
- * 左操作数
- * @param b
- * 右操作数
- */
- public static void compareOperator(int a, int b) {
- System.out.println("a==b " + (a == b));
- System.out.println("a!=b " + (a != b));
- System.out.println("a>b " + (a > b));
- System.out.println("a>=b " + (a >= b));
- System.out.println("a<b " + (a < b));
- System.out.println("a<=b " + (a <= b));
- }
- /**
- * 位运算: &, |, ^, ~, >>, >>>, <<
- *
- * @param a
- * 左操作数
- * @param b
- * 右操作数
- */
- public static void bitOperator(int a, int b) {
- /**
- * 按位与,两个操作数都为1时,结果为1,否则为0
- */
- int c = a & b;
- System.out.println("按位与后:" + c);
- /**
- * 按位或,两个操作数都为0时,结果为0,否则为1
- */
- c = a | b;
- System.out.println("按位或后:" + c);
- /**
- * 按位异或,两个操作数相同时结果为0,不同时结果为1
- */
- c = a ^ b;
- System.out.println("按位异或后:" + c);
- /**
- * 按位非,如果操作数为0,则变成1,如果为1,则变成0
- */
- c = ~a;
- System.out.println("按位非后:" + c);
- /**
- * 左移 (<<) 低位补零,高位舍弃,其实质相当于乘以2的n次方
- */
- c = a << b;
- System.out.println("左移后:" + c);
- /**
- * 右移 (>>) 如果值为正:高位补零,低位舍弃,如果值为负,高位补1,低位舍弃,其实质相当于除以2的n次方
- */
- c = a >> b;
- System.out.println("右移后:" + c);
- /**
- * 无符号右移 (>>>) 不论正负与否,高位补零,低位舍弃
- */
- c = a >>> b;
- System.out.println("无符号右移后:" + c);
- }
- /**
- * 逻辑运算符: &, |, ^, !, &&, ||,
- *
- * @param b1,b2,b3
- * 参与逻辑运算的boolean表达式
- */
- public static void booleanOperator(boolean b1, boolean b2, boolean b3) {
- /**
- * 短路与运算:如果第一个表达式结果为false,那么整个表达式的结果就是false,后面的表达式不再运算
- */
- if (b1 && b2 && b3) {
- System.out.println("变量b1, b2, b3都为true");
- } else {
- System.out.println("变量b1, b2, b3至少有一个是false");
- }
- /**
- * 短路或运算:如果第一个表达式结果为true,那么整个表达式的结果就是true,后面的表达式不再运算
- */
- if (b1 || b2 || b3) {
- System.out.println("变量b1, b2, b3至少有一个true");
- } else {
- System.out.println("变量b1, b2, b3都是false");
- }
- /**
- * 异或运算:操作数相同为false,不同为true
- */
- if (b1 ^ b2) {
- System.out.println("b1, b2的值不同");
- } else {
- System.out.println("b1, b2的值相同");
- }
- }
- /**
- * 其他运算符
- *
- * @param i
- * 参与运算的变量
- */
- public static void otherOperator(int i) {
- System.out.println(i++);
- System.out.println(++i);
- int x = (i > 0) ? i : -i;
- System.out.println(x);
- }
- public static void main(String[] args) {
- int a = 7;
- int b = 5;
- Operator.ArithmeticOperator(a, b);
- Operator.compareOperator(a, b);
- Operator.bitOperator(a, b);
- boolean b1 = true;
- boolean b2 = false;
- boolean b3 = true;
- Operator.booleanOperator(b1, b2, b3);
- Operator.otherOperator(7);
- }
- }
/**
* Java中的运算符
*/
package org.sean.module01;
/**
* @author 不落的太阳(Sean Yang)
*/
public class Operator {
/**
* 算数运算符: +, -, *, /, %
*
* @param a
* 左操作数
* @param b
* 右操作数
*/
public static void ArithmeticOperator(int a, int b) {
int result = a + b;
System.out.println("a+b=" + result);
/**
* 当 * 号两边的数据类型为char,byte,short时,其均会转换为int进行运算 除此以外运算结果取决于两个操作数中范围较宽的类型
*
* 当乘法运算产生的结果发生数据溢出时,不会抛出ArithmeticException,只会出现精度丢失的情况
*/
int mutiplyResult = a * b;
System.out.println("a*b=" + mutiplyResult);
/**
* 对于除法运算,当 / 号两边数据类型为整型时,结果为整型(不管其能否被除尽)
*
* 当 / 号两边数据有一个是浮点型,结果为浮点型
*
* 如果左操作数为整型,当 / 号的右操作数为0时,会抛出ArithmeticException
*
* 如果左操作数为浮点型,当 / 号的右操作数为0时,不会抛出异常
*
* 常见结果有三种:Infinity; -Infinity; NaN
*
* Infinity ---> 2.0/0 -Infinity ---> -2.0/0 NaN ---> 0.0/0; 0.0/0.0; 0/0.0
*/
int divideResult = a / b;
System.out.println("a/b=" + divideResult);
/**
* 判断是否为NaN
*/
System.out.println("0.0/0.0 is NaN:" + Double.isNaN(0.0/0.0));
/**
* 对于取模运算:实质是用左操作数连续减去右操作数,直到相减的结果小于右操作数,此时结果即为余数
*
* 当取模运算中有负数作为操作数的时候,取模运算结果的符号取决于左操作数的符号
*
* 如果左操作数为整型,当 % 符号的右操作数为0时,会抛出ArithmeticException
*
* 如果左操作数为浮点型,当 % 符号右操作数为0时,不会抛出异常,
*
* NaN :2.0%0; -2.0%0; 0.0%0; 0%0; 0%0.0
*/
int modResult = a % b;
System.out.println("a%b=" + modResult);
}
/**
* 比较运算符: ==, !=, <, <=, >, >=,
*
* @param a
* 左操作数
* @param b
* 右操作数
*/
public static void compareOperator(int a, int b) {
System.out.println("a==b " + (a == b));
System.out.println("a!=b " + (a != b));
System.out.println("a>b " + (a > b));
System.out.println("a>=b " + (a >= b));
System.out.println("a<b " + (a < b));
System.out.println("a<=b " + (a <= b));
}
/**
* 位运算: &, |, ^, ~, >>, >>>, <<
*
* @param a
* 左操作数
* @param b
* 右操作数
*/
public static void bitOperator(int a, int b) {
/**
* 按位与,两个操作数都为1时,结果为1,否则为0
*/
int c = a & b;
System.out.println("按位与后:" + c);
/**
* 按位或,两个操作数都为0时,结果为0,否则为1
*/
c = a | b;
System.out.println("按位或后:" + c);
/**
* 按位异或,两个操作数相同时结果为0,不同时结果为1
*/
c = a ^ b;
System.out.println("按位异或后:" + c);
/**
* 按位非,如果操作数为0,则变成1,如果为1,则变成0
*/
c = ~a;
System.out.println("按位非后:" + c);
/**
* 左移 (<<) 低位补零,高位舍弃,其实质相当于乘以2的n次方
*/
c = a << b;
System.out.println("左移后:" + c);
/**
* 右移 (>>) 如果值为正:高位补零,低位舍弃,如果值为负,高位补1,低位舍弃,其实质相当于除以2的n次方
*/
c = a >> b;
System.out.println("右移后:" + c);
/**
* 无符号右移 (>>>) 不论正负与否,高位补零,低位舍弃
*/
c = a >>> b;
System.out.println("无符号右移后:" + c);
}
/**
* 逻辑运算符: &, |, ^, !, &&, ||,
*
* @param b1,b2,b3
* 参与逻辑运算的boolean表达式
*/
public static void booleanOperator(boolean b1, boolean b2, boolean b3) {
/**
* 短路与运算:如果第一个表达式结果为false,那么整个表达式的结果就是false,后面的表达式不再运算
*/
if (b1 && b2 && b3) {
System.out.println("变量b1, b2, b3都为true");
} else {
System.out.println("变量b1, b2, b3至少有一个是false");
}
/**
* 短路或运算:如果第一个表达式结果为true,那么整个表达式的结果就是true,后面的表达式不再运算
*/
if (b1 || b2 || b3) {
System.out.println("变量b1, b2, b3至少有一个true");
} else {
System.out.println("变量b1, b2, b3都是false");
}
/**
* 异或运算:操作数相同为false,不同为true
*/
if (b1 ^ b2) {
System.out.println("b1, b2的值不同");
} else {
System.out.println("b1, b2的值相同");
}
}
/**
* 其他运算符
*
* @param i
* 参与运算的变量
*/
public static void otherOperator(int i) {
System.out.println(i++);
System.out.println(++i);
int x = (i > 0) ? i : -i;
System.out.println(x);
}
public static void main(String[] args) {
int a = 7;
int b = 5;
Operator.ArithmeticOperator(a, b);
Operator.compareOperator(a, b);
Operator.bitOperator(a, b);
boolean b1 = true;
boolean b2 = false;
boolean b3 = true;
Operator.booleanOperator(b1, b2, b3);
Operator.otherOperator(7);
}
}
Java中的流程控制
- /**
- * Java中的流程控制
- */
- package org.sean.module01;
- /**
- * @author 不落的太阳(Sean Yang)
- */
- public class FlowControl {
- // 目标值
- public static final int TARGET_NUMBER = 10;
- public FlowControl() {
- System.out.println("constructor called");
- }
- /**
- * 通过if语句和递归方法使n的值逐渐变为TARGET_NUMBER;
- *
- * @param n
- */
- public void ifStatement(int n) {
- System.out.print(n + " ");
- if (n == TARGET_NUMBER) {
- System.out.println();
- } else if (n > TARGET_NUMBER) {
- ifStatement(--n);
- } else if (n < TARGET_NUMBER) {
- ifStatement(++n);
- }
- }
- /**
- * 通过for循环将n的值逐渐变为TARGET_NUMBER
- *
- * @param n
- */
- public void forStatement(int n) {
- for (; n > TARGET_NUMBER; n--) {
- System.out.print(n + " ");
- }
- for (; n < TARGET_NUMBER; n++) {
- System.out.print(n + " ");
- }
- System.out.println(n);
- }
- /**
- * 通过while循环将n的值逐渐变为TARGET_NUMBER
- *
- * @param n
- */
- public void whileStatement(int n) {
- while (n < TARGET_NUMBER) {
- System.out.print(n++ + " ");
- }
- while (n > TARGET_NUMBER) {
- System.out.println(n-- + " ");
- }
- System.out.println(n);
- }
- /**
- * 通过do...while循环将n的值逐渐变为TARGET_NUMBER
- *
- * @param n
- */
- public void doWhileStatement(int n) {
- if (n > TARGET_NUMBER) {
- do {
- System.out.print(n-- + " ");
- } while (n > TARGET_NUMBER);
- } else if (n < TARGET_NUMBER) {
- do {
- System.out.print(n++ + " ");
- } while (n < TARGET_NUMBER);
- }
- System.out.println(n);
- }
- /**
- * switch结构
- *
- * @param n
- */
- public void switchStatement(int n) {
- switch (n) {
- case 10:
- System.out.println("n=10");
- break;
- case 9:
- System.out.println("n=9");
- break;
- case 8:
- System.out.println("n=8");
- break;
- default:
- System.out.println("n!=8 and n!=9 and n!=10");
- break;
- }
- }
- public static void main(String[] args) {
- FlowControl control = new FlowControl();
- control.ifStatement(6);
- control.forStatement(16);
- control.whileStatement(6);
- control.doWhileStatement(16);
- control.switchStatement(8);
- }
- }
/**
* Java中的流程控制
*/
package org.sean.module01;
/**
* @author 不落的太阳(Sean Yang)
*/
public class FlowControl {
// 目标值
public static final int TARGET_NUMBER = 10;
public FlowControl() {
System.out.println("constructor called");
}
/**
* 通过if语句和递归方法使n的值逐渐变为TARGET_NUMBER;
*
* @param n
*/
public void ifStatement(int n) {
System.out.print(n + " ");
if (n == TARGET_NUMBER) {
System.out.println();
} else if (n > TARGET_NUMBER) {
ifStatement(--n);
} else if (n < TARGET_NUMBER) {
ifStatement(++n);
}
}
/**
* 通过for循环将n的值逐渐变为TARGET_NUMBER
*
* @param n
*/
public void forStatement(int n) {
for (; n > TARGET_NUMBER; n--) {
System.out.print(n + " ");
}
for (; n < TARGET_NUMBER; n++) {
System.out.print(n + " ");
}
System.out.println(n);
}
/**
* 通过while循环将n的值逐渐变为TARGET_NUMBER
*
* @param n
*/
public void whileStatement(int n) {
while (n < TARGET_NUMBER) {
System.out.print(n++ + " ");
}
while (n > TARGET_NUMBER) {
System.out.println(n-- + " ");
}
System.out.println(n);
}
/**
* 通过do...while循环将n的值逐渐变为TARGET_NUMBER
*
* @param n
*/
public void doWhileStatement(int n) {
if (n > TARGET_NUMBER) {
do {
System.out.print(n-- + " ");
} while (n > TARGET_NUMBER);
} else if (n < TARGET_NUMBER) {
do {
System.out.print(n++ + " ");
} while (n < TARGET_NUMBER);
}
System.out.println(n);
}
/**
* switch结构
*
* @param n
*/
public void switchStatement(int n) {
switch (n) {
case 10:
System.out.println("n=10");
break;
case 9:
System.out.println("n=9");
break;
case 8:
System.out.println("n=8");
break;
default:
System.out.println("n!=8 and n!=9 and n!=10");
break;
}
}
public static void main(String[] args) {
FlowControl control = new FlowControl();
control.ifStatement(6);
control.forStatement(16);
control.whileStatement(6);
control.doWhileStatement(16);
control.switchStatement(8);
}
}
最后带给大家一个比较全面的打印各种形状的代码,貌似有时笔试面试会问到
- /**
- * 打印各种图形
- */
- package org.sean.module01;
- import java.util.Scanner;
- /**
- * @author 不落的太阳(Sean Yang)
- */
- public class PrintTriangle {
- public static void shape1(int k) {
- for (int i = 0; i < k; i++) {
- for (int j = 0; j <= i; j++) {
- System.out.print("*");
- }
- System.out.println();
- }
- }
- public static void shape2(int k) {
- for (int i = 0; i < k; i++) {
- for (int j = k; j > i; j--) {
- System.out.print("*");
- }
- System.out.println();
- }
- }
- /**
- * 打印等腰三角形
- *
- * @param i
- * 三角形的行数
- */
- public static void shape3(int n) {
- for (int i = 1; i <= n; i++) {
- for (int j = n - i; j >= 0; j--) {
- System.out.print(" ");
- }
- for (int k = 1; k <= (2 * i - 1); k++) {
- System.out.print("*");
- }
- System.out.println("");
- }
- }
- /**
- * 打印实心菱形
- *
- * @param i
- * 菱形的行数
- */
- public static void shape4(int n) {
- for (int i = 0; i < n; i++) {
- for (int k = n - i; k > 0; k--) {
- System.out.print(" ");
- }
- for (int j = 1; j <= (2 * i + 1); j++) {
- System.out.print("*");
- }
- System.out.println();
- }
- for (int i = n - 1; i > 0; i--) {
- for (int k = 0; k <= n - i; k++) {
- System.out.print(" ");
- }
- for (int k = (2 * i); k > 1; k--) {
- System.out.print("*");
- }
- System.out.println();
- }
- }
- /**
- * 打印空心菱形
- *
- * @param n
- * 菱形行数
- */
- public static void shape5(int n) {
- for (int i = 0; i < n; i++) {
- for (int k = n - i; k > 0; k--) {
- System.out.print(" ");
- }
- System.out.print("*");
- for (int j = 1; j <= (2 * i - 1); j++) {
- System.out.print(" ");
- }
- if (i > 0) {
- System.out.print("*");
- }
- System.out.println();
- }
- for (int i = n - 1; i > 0; i--) {
- for (int k = 0; k <= n - i; k++) {
- System.out.print(" ");
- }
- System.out.print("*");
- for (int k = ((2 * i) - 1); k > 2; k--) {
- System.out.print(" ");
- }
- if (i > 1) {
- System.out.print("*");
- }
- System.out.println();
- }
- }
- public strictfp static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int i = scanner.nextInt();
- PrintTriangle.shape1(i);
- System.out.println();
- PrintTriangle.shape2(i);
- System.out.println();
- PrintTriangle.shape3(i);
- System.out.println();
- PrintTriangle.shape4(i);
- System.out.println();
- PrintTriangle.shape5(i);
- }
- }