JAVA之输入行数打印菱形

本文介绍了一个使用Java编写的程序,该程序通过用户输入的行数来打印菱形图案。程序首先验证输入是否为奇数,然后利用嵌套循环结构分别绘制菱形的上半部分和下半部分。
1、输入行数打印菱形。
打开记事本,写如下一段代码:
import java.util.Scanner;
/**
* 输入行数打印菱形
*/
public class Diamond {
 public static void main(String[] args) {
  int rows = 0; //菱形的行数
  Scanner input = new Scanner(System.in);
  System.out.print("请输入菱形行数:");
  rows = input.nextInt();
  while(rows%2 == 0){
   System.out.print("请输入奇数:");
   rows = input.nextInt();
  }
  int n = (rows+1)/2;
  //打印菱形的上半部分
  for(int i = 1; i <= n; i++){//外层循环变量i控制行数
   for(int j = 1; j <= n-i; j++){//内层循环变量j控制该行空格数
    System.out.print(" ");
   }
   for(int k = 1; k <= 2*i-1; k++){//内层循环变量k控制该行*号数
    System.out.print("*");
   }
   System.out.print("\n");
  }
  //打印菱形的下半部分
  for(int i = n-1; i >= 1; i--){
   for(int j = 1; j <= n-i; j++){
    System.out.print(" ");
   }
   for(int k = 1; k <= 2*i-1; k++){
    System.out.print("*");
   }
   System.out.print("\n");
  }
 }
}
保存为 Diamond.java【同上节,我还是把他放在了D盘下InputTest文件夹内】 
打开dos运行窗口,输入d:转到D盘,接下来输入cd InputTest转到InputTest目录下:
输入Javac  Diamond.java 回车 java  Diamond。

我们输入6行,提示我们只能是奇数,那么我们输入5行,下面直接输入7行;结果如下图:


<think> 我们正在讨论Java打印行数的方法。根据引用内容,我们有两个不同的上下文: 1. 引用[1]展示了如何通过输入行数打印菱形图案,其中涉及了循环控制打印行数。 2. 引用[2]是一个统计Java代码有效行数的脚本,它通过命令行工具处理。 3. 引用[3]提到在异常堆栈跟踪中获取行数。 用户的问题是:“我想查询在Java打印行数的方法”,结合引用,可能有三种理解: a) 如何在控制台打印特定行数的图案(如菱形)? b) 如何统计一个Java源文件的有效代码行数? c) 如何在异常信息中打印行数(堆栈跟踪中的行)? 由于用户之前的问题是关于APK接收消息,而这次引用内容涉及打印行数,我们需要根据引用内容来回答。 根据引用[1]的代码,它通过循环控制行数打印菱形。所以,如果用户是想打印图案,那么我们可以参考这个。 另外,引用[2]是统计代码行数,引用[3]是关于异常行数。 由于用户明确说“打印行数”,可能是指打印特定行数的图案(如菱形)。因为引用[1]的标题是“Java输入行数打印菱形”,所以我们将重点放在这个上。 因此,我们将解释如何通过输入行数打印菱形图案,并给出代码示例。 另外,用户也可能想知道如何获取当前代码执行的行(比如用于调试),所以我们也应该涵盖这一点。 因此,回答将分为两部分: 1. 打印特定行数的图案(以菱形为例)。 2. 在代码中获取并打印当前行(用于调试等)。 注意:引用[2]和[3]的内容虽然相关,但并不是直接关于“打印行数”,而是统计行数和异常行数。如果用户需要,我们也可以简单提及,但主要回答打印图案和获取当前行。 步骤: 第一部分:打印菱形图案(参考引用[1]) 1. 获取用户输入行数(要求奇数)。 2. 打印上半部分(递增的星)。 3. 打印下半部分(递减的星)。 第二部分:获取当前行Java中,我们可以使用以下方式获取当前行: Thread.currentThread().getStackTrace()[1].getLineNumber(); 或者,在异常堆栈跟踪中,我们可以通过异常对象获取行(如引用[3]所提及)。 同时,我们生成相关问题。 </think> 在 Java打印行数主要有两种场景:打印特定行数的图案和获取代码执行位置的行。以下是具体实现方法: ### 一、打印指定行数的图案(以菱形为例) 参考菱形打印代码[^1],核心思路是使用嵌套循环控制行数和每行的空格/星数量: ```java public class DiamondPrinter { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请输入菱形行数(奇数):"); int n = sc.nextInt(); // 上半部分 (递增行) for (int i = 1; i <= n/2 + 1; i++) { // 打印左侧空格 System.out.print(" ".repeat(n/2 + 1 - i)); // 打印 System.out.print("*".repeat(2*i - 1)); System.out.println(); } // 下半部分 (递减行) for (int i = n/2; i > 0; i--) { // 打印左侧空格 System.out.print(" ".repeat(n/2 - i + 1)); // 打印 System.out.print("*".repeat(2*i - 1)); System.out.println(); } } } ``` 执行流程: ``` 输入: 5 输出: * *** ***** *** * ``` ### 二、获取代码执行的行 通过异常堆栈跟踪可获取精确行(参考异常处理[^3]): ```java public class LineNumberPrinter { public static void main(String[] args) { printCurrentLine(); // 调用行打印方法 } public static void printCurrentLine() { try { throw new Exception("Trace Line"); } catch (Exception e) { // 获取堆栈跟踪的首个元素(当前方法) StackTraceElement element = e.getStackTrace()[0]; System.out.println("当前行: " + element.getLineNumber()); System.out.println("类名: " + element.getClassName()); System.out.println("方法名: " + element.getMethodName()); } } } ``` 输出示例: ``` 当前行: 12 // throw语句所在行 类名: LineNumberPrinter 方法名: printCurrentLine ``` ### 三、统计文件代码行数 结合 Shell 命令实现高效统计(参考行数统计脚本[^2]): ```bash # 统计当前目录Java文件有效代码行数 git ls-files | grep '\.java$' | xargs perl -n -e ' BEGIN { $in_comment = 0; $in_string = 0 } # 注释和字符串状态处理逻辑... print if !/^\s*$/; ' | wc -l ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值