我最近刚学Java,写了一个小程序,功能是让其以正三角的形式打印“*”,但用javac编译时,提示“错误,无法读取”,请高手指教一下,感激不尽!
代码如下:
import java.util.Scanner;
/**
 * 用*输出一个三角形
 * 
 * @author wang
 * 
 */
public class SignOutput {
public static void main(String[] args) {
System.out.println("请输入一个1到9内的整数!");

try {
Scanner in = new Scanner(System.in);
String str = in.next();
int line = Integer.parseInt(str);
if (line > 1 || line > 9) {
System.out.println("请输入一个0到9内的整数!");
} else {
SignOut so = new SignOut(line);
so.signOutput(line);
}
} catch (Exception e) {
System.out.println("请输入一个0到9内的整数!!");
e.printStackTrace();
}
}
}public class SignOut {
/**
 * Constructor
 */
public SignOut() {
} /**
 * Constructor
 * 
 * @param line
 */
public SignOut(int line) {
this.line = line;
} /**
 * 以三角形的形式输出"*"
 * 
 * @param line
 *            int 输入的行数
 */
public void signOutput(int line) {
int k = 0;
for (int i = 0; i < line; i++) {
if (line % 2 == 0) {
k = line / 2;
} else {
k = (2 * (line) + 1) / 2;
}
for (int j = 0; j < k - 1; j++) {
System.out.print("");
}
k--;
for (int j = 0; j < 2 * line - 1; j++) {
System.out.print("*");
}
System.out.println("");
}
} private int line = 0;
}

解决方案 »

  1.   

    帮你改好了,记得给分.
    import java.util.Scanner;/**
     * 用*输出一个三角形
     * 
     * @author wang
     * 
     */
    public class SignOutput {
    public static void signOutput(int line) {
    for (int i = 0; i < line; i++) {
    for (int j = 0; j < line - i; j++) {
    System.out.print(" ");
    }
    for (int j = 0; j <(2 * i - 1); j++) {
    System.out.print("*");
    }
    System.out.println("");
    }
    }
    public static void main(String[] args) {
    int line;
    do {
    do {
    System.out.println("请输入一个1到9内的整数!");
    Scanner in = new Scanner(System.in);
    String str = in.next();
    line = Integer.parseInt(str);
    if (line <= 1 || line > 9)
    break; } while (line <= 1 || line > 9);
    } while (line <= 1 || line > 9);
    SignOutput.signOutput(line);
    }
    }