刷题DAY19

打印数字图案

题目:从键盘输入一个整数n(1≤n≤9),打印出指定的数字图形

输入:正整数n(1≤n≤9)

输出:指定数字图形

输入:5

输出:

1

121 12321 1234321 123454321 1234321 12321 121 1

import javax.swing.*;
import java.lang.Math;
import java.util.Scanner;
public class 打印数字图形{
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int i, j, k;
            for (i = 0; i < 2*n-1; i++){
                k = 0;
                if (i < n){
                    for (j = 0; j < n+i; j++){
                        if (j < n-i-1){
                            System.out.printf(" ");
                        }
                        else if(j >= n-i-1&&j < n){
                            k++;
                            System.out.printf("%d", k);
                        }
                        else{
                            k--;
                            System.out.printf("%d", k);
                        }
                    }
                    System.out.printf("\n");
                }
                else{
                    for (j = 0; j < 3*n-i-2; j++){
                        if (j < i-n+1){
                            System.out.printf(" ");
                        }
                        else if (j >= i-n+1 && j < n){
                            k++;
                            System.out.printf("%d", k);
                        }
                        else{
                            k--;
                            System.out.printf("%d", k);
                        }
                    }
                    System.out.printf("\n");
                }
            }
        }
}
​

知识点

占位符

String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。

format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。

format(Locale locale, String format, Object... args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。

显示不同转换符实现不同数据类型到字符串的转换,如图所示。

转 换 符说 明示 例
%s字符串类型"mingrisoft"
%c字符类型'm'
%b布尔类型true
%d整数类型(十进制)99
%x整数类型(十六进制)FF
%o整数类型(八进制)77
%f浮点类型99.99
%a十六进制浮点类型FF.35AE
%e指数类型9.38e+5
%g通用浮点类型(f和e类型中较短的)
%h散列码
%%百分比类型
%n换行符
%tx日期与时间类型(x代表不同的日期与时间转换符)

示例:

public static void main(String[] args) {
        String str=null;
        str=String.format("Hi,%s", "小郑");
        System.out.println(str);
        str=String.format("Hi,%s:%s.%s", "小登","中登","老登");          
        System.out.println(str);                         
        System.out.printf("字母a的大写是:%c %n", 'A');
        System.out.printf("3>7的结果是:%b %n", 3>7);
        System.out.printf("100的一半是:%d %n", 100/2);
        System.out.printf("100的16进制数是:%x %n", 100);
        System.out.printf("100的8进制数是:%o %n", 100);
        System.out.printf("50元的书打8.5折扣是:%f 元%n", 50*0.85);
        System.out.printf("上面价格的16进制数是:%a %n", 50*0.85);
        System.out.printf("上面价格的指数表示:%e %n", 50*0.85);
        System.out.printf("上面价格的指数和浮点数结果的长度较短的是:%g %n", 50*0.85);
        System.out.printf("上面的折扣是%d%% %n", 85);
        System.out.printf("字母A的散列码是:%h %n", 'A');
    }

输出结果:

Hi,小郑 Hi,小登:中登.老登 字母a的大写是:A 3>7的结果是:false 100的一半是:50 100的16进制数是:64 100的8进制数是:144 50元的书打8.5折扣是:42.500000 元 上面价格的16进制数是:0x1.54p5 上面价格的指数表示:4.250000e+01 上面价格的指数和浮点数结果的长度较短的是:42.5000 上面的折扣是85% 字母A的散列码是:41

println和print

printf是一个格式化输出方法,它以指定的格式输出指定的信息。它类似于C语言中的printf,在Java中,你可以使用“%”转换符指定要在输出中包含的变量值。下面是一个简单的示例:

System.out.printf("My name is %s and my age is %d", "Bob", 25);

输出: My name is Bob and my age is 25

在这个示例中,“%s”和“%d”是转换符,表示字符串和整数变量,他们按顺序插入到字符串中。

当你使用printf时,你可以使用转换符将不同类型的变量插入到输出字符串

println是一个输出方法,它将指定的信息打印到控制台,并在结尾处换行。它不适用于格式化输出,如下面的示例:

System.out.println("My name is Bob");
System.out.println("My age is 25");

输出: My name is Bob My age is 25

println方法只需要将指定的信息打印到控制台并换行。它可以接受一个或多个参数,并将它们打印到控制台

printf方法可以让你在控制台上实现更复杂的输出格式,比如对齐、填充等。你可以使用下面的转换符指定一个字段宽度和一个填充字符,这样就可以对齐输出:

  • %10s - 字符串类型,字段宽度为10

  • %-10s - 字符串类型,字段宽度为10,左对齐

  • %03d - 整数类型,字段宽度为3,不足3位的用0填充

另一个区别是printf方法可以输出到一个文件中,而println方法只能输出到控制台。你可以使用PrintWriter类将输出重定向到文件中,像这样:

PrintWriter out = new PrintWriter(new FileWriter("output.txt"));
out.printf("My name is %s and my age is %d", "Bob", 25);
out.close();

这将把输出写入到名为“output.txt”的文件中,而不是控制台。

因此,printf和println分别适用于不同的输出需求。如果你需要格式化你的输出,那么使用printf方法,如果你只需要简单的输出文本并换行,那么使用println方法。printf和println都是Java中常见的输出方法,用于在控制台输出文本。printf适用于更复杂的输出,可以实现对齐和填充等功能。println则适用于简单的输出,只需要打印一行文本并换行即可。

 

单词统计

题目:从键盘输入一行字符,统计其中单词的个数,各单词以空格分隔,且空格数可以是多个

输入:输入只有一行句子。仅有空格和英文字母构成,不超过100个字符

输出:单词的个数

输入:stable marriage problem Consists of Matching members

输出:7

import java.util.Scanner;
public class 单词统计 {
        public static void main(String[] args) {
            // 创建一个Scanner对象以接收用户输入
            Scanner scanner = new Scanner(System.in);
            // 读取一行输入
            String input = scanner.nextLine();
​
            // 初始化单词计数器
            int count = 0;
            // 用于标记当前是否在单词中
            boolean inWord = false;
​
            // 遍历输入字符串的每个字符
            for (int i = 0; i < input.length(); i++) {
                // 获取当前字符
                char ch = input.charAt(i);
                // 如果当前字符是字母或数字
                if (Character.isLetterOrDigit(ch)) {
                    // 如果不在单词中,则增加单词计数器
                    if (!inWord) {
                        count++;
                        // 标记为当前处于单词中
                        inWord = true;
                    }
                } else {
                    // 如果当前字符不是字母或数字,则标记为不在单词中
                    inWord = false;
                }
            }
​
            // 打印单词计数器的值,即输入字符串中的单词数目
            System.out.println(count);
        }
    }
​
​
​

知识点

Character.isLetterOrDigit()

是Java中的一个字符方法,它用于检查给定的单个Unicode字符是否为字母(大写或小写字母)或者是数字。

这个方法对于处理用户输入、验证字符串格式或者做简单的文本处理非常有用,比如判断某个字符是否适合用于拼接成一个有效的标识符

java.lang.Character.isLetterOrDigit(char ch) 这个方法确定指定的字符是否为字母或数字。字符被认为是字母或数字,如果字符是字母或数字则此方法返回true,否则为false。

  • 28
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值