我的Java三角代码没有';不要打印完整的三角形
我必须写一个代码,打印一个三角形,最后一行的长度是输入的数字。此外,空的空间必须用圆点填充 此外,代码必须运行,直到输入是一个不均匀的数字 遗憾的是,我的代码没有打印出点或其他星星,只是最后一行 有没有人可以看一下,给我一些提示 谢谢你的帮助。事先非常感谢 代码如下:我的Java三角代码没有';不要打印完整的三角形,java,methods,do-while,multiple-constructors,triangle-count,Java,Methods,Do While,Multiple Constructors,Triangle Count,我必须写一个代码,打印一个三角形,最后一行的长度是输入的数字。此外,空的空间必须用圆点填充 此外,代码必须运行,直到输入是一个不均匀的数字 遗憾的是,我的代码没有打印出点或其他星星,只是最后一行 有没有人可以看一下,给我一些提示 谢谢你的帮助。事先非常感谢 代码如下: import java.util.Scanner; public class Triangle_new { //Main-Method with Input-Check public static void m
import java.util.Scanner;
public class Triangle_new {
//Main-Method with Input-Check
public static void main(String[] args) {
System.out.println("Type in a number to get the triangle:");
Scanner sc = new Scanner(System.in);
int length = sc.nextInt();
if(length < 0 || length%2 == 0) {
System.out.println("Please type in a uneven number or zero to quit. ");
Triangle_Test.check_input(length);
}else{
display_triangle(length);
}
}
//DisplayTriangle-Method
public static void display_triangle(int length) {
int lines = (length+1)/2;
//Height of the Triangle
get_lines(length);
//Dotfiller Left Side
if(lines > 0){
get_dotsleft(lines, length);
}
//Stars-Output
if(lines > 0) {
get_stars(lines);
}
//Dotfiller Right Side
if(lines > 0) {
get_dotsright(lines, length);
}
}
//Constructors for Triangle
public static void get_lines(int length) {
for(int lines = 1; lines <= (length + 1) / 2; lines++){
System.out.println();
}
}
public static void get_dotsleft(int lines, int length){
for(int leftfiller = 1; leftfiller <= ((length + 1) / 2) - lines; leftfiller++) {
System.out.print(".");
}
}
public static void get_stars(int lines) {
for(int stars = 1; stars <= (2 * lines) - 1; stars++) {
System.out.print("*");
}
}
public static void get_dotsright(int lines, int length){
for(int rightfiller = 1; rightfiller <= ((length+1) / 2) - lines; rightfiller++) {
System.out.print(".");
}
}
}
//Triangle_Test Class with Input-Check Method
class Triangle_Test extends Triangle_new {
public static void check_input(int length) {
//Check Input until Input is uneven number
Scanner sc = new Scanner(System.in);
do {
length = sc.nextInt();
if(length%2 == 0 && length != 0) {
System.out.println("Invalid input. Try again.");
}
if(length%2 != 0 && length > 0) {
}
//Triangle Output
if(length%2 != 0){
Triangle_new.display_triangle(length);
}
if(length == 0) {
System.out.println(" -> Zero detected. Program will be shutdown.");
}
}while(length%2 != 0 || length != 0);
}
}
导入java.util.Scanner;
公共课三角新{
//带输入检查的主方法
公共静态void main(字符串[]args){
System.out.println(“输入一个数字得到三角形:”);
扫描仪sc=新的扫描仪(System.in);
int length=sc.nextInt();
如果(长度<0 | |长度%2==0){
System.out.println(“请输入一个不均匀的数字或输入零以退出”);
三角形测试。检查输入(长度);
}否则{
显示三角形(长度);
}
}
//显示三角形法
公共静态空白显示_三角形(整数长度){
整数行=(长度+1)/2;
//三角形高度
获取_行(长度);
//点填充器左侧
如果(行>0){
获取dotsleft(线、长度);
}
//恒星输出
如果(行>0){
得到星星(线);
}
//点填充器右侧
如果(行>0){
获取正确的点(线、长度);
}
}
//三角形的构造函数
公共静态void get_行(整数长度){
对于(int lines=1;lines您的get_lines()
方法听起来应该返回三角形将填充多少行(也基于您的注释),它所做的是打印空行。
尽量不要使用它。按如下方式更改显示三角功能:
public static void displayTriangle(int length) {
String stars = "*";
for (int i =0 ; i< ((length+1) /2); i++){
String dots = "";
for (int j = 0; j < (length - i * 2) / 2; j++) {
dots += ".";
}
System.out.println(dots+stars+dots);
stars +="**";
}
}
publicstaticvoiddisplaytangle(int-length){
字符串星=“*”;
对于(int i=0;i<((长度+1)/2);i++){
串点=”;
对于(int j=0;j<(长度-i*2)/2;j++){
圆点+=”;
}
系统输出打印项次(点+星+点);
星星+=“**”;
}
}
让我解释一下您的解决方案不起作用的原因:
您的get_lines循环只打印空行
您应该在一个大循环中显示所有内容(表示行数),并在该循环中计算要显示的星星和点的数量
请注意:每行中的点数+星星数始终等于用户输入的总数
左边的点数始终等于星星右边的点数,每边=(用户输入的总数-星星数)/2
每行将星星数增加2
这就是我对这个问题的想法,并由此得出了我的解决方案。以下是代码中的问题:
get_lines只是在for循环中打印一些新行,而我们只需要在每个星/点组合后只需要一行新行。换句话说,新行数不会改变。它始终是每行一行
get_dotsLeft和get_dotsRight实际上是相同的。它们应该只在一个函数中组合
打印点和星星的循环的限制不正确。我修复了它们
按照惯例,在命名函数时,最好遵循驼峰式命名,即get_行应该是getline
所有get_uu函数都应该是私有的。它们应该只在类中访问,不应该向其他类公开(这不会引发错误,但公开这些函数不是一个好的设计)
公共静态空白显示\u三角形(整数长度){
整数行=(长度+1)/2;
对于(int i=1;我想知道答案。但我必须使用get_u方法来构建三角形,这就是问题所在。@Felix我将使用您的get_u方法发布另一个解决方案,请检查它。当尝试使用您建议的添加内容编译代码时,我得到以下错误代码:我在此处发布了它们,因为它们超过了al的字符数lowed.@Felix他们不会编译并给出错误,因为我更改了传递给get_dotsleft、get_stars和get_dotsright的参数的数量。似乎在代码中的某个地方,他们仍然使用两个参数而不是一个。好吧,我已经解决了这个问题。但是现在三角形的第一行星没有显示出来。例如输入7三角形必须有4行7-5-3-1颗星。现在它只有7-5-3颗星。我应该做什么改变?@Felix我编辑了这篇文章。你只需要在display_triangle方法中更改循环,这样它就会显示:for(int I=1;I
public static void display_triangle(int length) {
int lines = (length+1)/2;
for (int i =1 ; i<= lines ;i++) {
//Height of the Triangle
get_lines(length);
get_dotsleft(lines-i);
get_stars(i);
get_dotsright(lines-i);
}
}
//Constructors for Triangle
private static void get_lines(int length) {
System.out.println("");
}
private static void get_dotsleft(int lines){
for(int leftfiller = 1; leftfiller <= lines; leftfiller++) {
System.out.print(".");
}
}
private static void get_stars(int lines) {
for(int stars = 1; stars <= (2 * lines) - 1; stars++) {
System.out.print("*");
}
}
private static void get_dotsright(int lines){
for(int rightfiller = 1; rightfiller <= lines; rightfiller++) {
System.out.print(".");
}
}