JAVA 天梯赛 (难点)

1.如何保留一位小数

输入格式:
输入第一行给出一个正整数H(100 < H ≤ 300),为某人身高。

输出格式:
在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。

输入样例:
169
输出样例:
124.2

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
     Scanner sc=new Scanner(System.in); 
     int H=sc.nextInt();
     double j=0;
     if(H<=300&&H>100) {
         j=(H-100)*0.9*2;
         System.out.println(String.format("%.1f",j));
     }
    }
}

保留小数 解析

String.format("%.1f",j)); // String.format()函数 ,把 j 格式化为 %.1f 样子 ,小数点后一位浮点型数据

2.如何使输入的数值横向排列

image.png
image.png

创建一个 Scanner 实例

3.如何把字符串复制给数组

toCharArray() 方法将字符串转换为字符数组。

3.世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
     Scanner sc=new Scanner(System.in); 
     String A=sc.nextLine();
     char[] arry=A.toCharArray();
     for(int i=6;i<arry.length;i++) {
         System.out.print(arry[i]);
      }
     System.out.print(arry[2]);
     for(int i=0;i<2;i++) {
         System.out.print(arry[i]);
      }
     for(int i=2;i<5;i++) {
         System.out.print(arry[i]);
      }
    }
}

4.输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:

0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String shu = sc.nextLine();
        char[] c = shu.toCharArray();
        int[] a = new int[c.length];
        for (int i = 0; i < c.length; i++) {   //把字符型数组转化为整型
            a[i] = c[i];
        }
        for (int i = 0; i < a.length; i++) {
            switch (a[i]) {
            case '0':
                System.out.print("ling");
                break;
            case '1':
                System.out.print("yi");
                break;
            case '2':
                System.out.print("er");
                break;
            case '3':
                System.out.print("san");
                break;
            case '4':
                System.out.print("si");
                break;
            case '5':
                System.out.print("wu");
                break;
            case '6':
                System.out.print("liu");
                break;
            case '7':
                System.out.print("qi");
                break;
            case '8':
                System.out.print("ba");
                break;
            case '9':
                System.out.print("jiu");
                break;
            default:
                System.out.print("fu");
                break;
            }
            if (i < a.length - 1) {     //防止首尾出现空格
                System.out.print(" ");
            }
        }
    }
}
image.png

切记:输出的拼音首和尾没有空格

5.给定两个整数A和B,输出从A到B的所有整数以及这些数的和。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int A = sc.nextInt();
        int B = sc.nextInt();
        int Sum = 0;
        int t = 0;
        t = B - A;
        for (int i = 0; i <= t; i++) {
            if (i % 5 == 0 && i != 0) {
                System.out.print("\n");
            }
            int k = A++;
            System.out.print(String.format("%5d", k));  //让 k 输出的字符占五个空格字符
            Sum = Sum + k;
        }
        System.out.print("\nSum = " + Sum);
    }
}

输出:


image.png

6.本题要求将输入的任意3个整数从小到大输出。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int a = s.nextInt();
        int b = s.nextInt();
        int c = s.nextInt();
        int k2 = 0, k3 = 0;
        int k1 = Math.max(c, Math.max(a, b));     //三个数比较大小
        if (k1 == a) {
            k2 = Math.max(b, c);
            if (k2 == b) {
                k3 = c;
            } else {
                k3 = b;
            }
        }
        if (k1 == b) {
            k2 = Math.max(a, c);
            if (k2 == a) {
                k3 = c;
            } else {
                k3 = a;
            }
        }
        if (k1 == c) {
            k2 = Math.max(b, a);
            if (k2 == b) {
                k3 = a;
            } else {
                k3 = b;
            }
        }
        System.out.println(k3 + "->" + k2 + "->" + k1);
    }
}

Math.max(a, b) 比较a,b大小的函数

7.Java 拆分字符串的方法

split() 方法根据匹配给定的正则表达式来拆分字符串。

例如:

String[] b = a.split(":");

注意: . 、 | 和 * 等转义字符,必须得加 \。

注意:多个分隔符,可以用 | 作为连字符

8.将字符串类型转化为整型的操作

parseInt()方法用于将字符串参数作为有符号的十进制整数进行解析。
例如:

int x =Integer.parseInt("9");          // 9
double c = Double.parseDouble("5");    //5.0
9.输出值前面要带0
printf("%02d" ,3)       //%02d   整数不够2列就补上0
10.微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。另外,虽然一天有24小时,钟却是只在后半天敲1~12下。例如在23:00敲钟,就是“当当当当当当当当当当当”,而到了23:01就会是“当当当当当当当当当当当当”。在午夜00:00到中午12:00期间(端点时间包括在内),笨钟是不敲的。
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String a = s.nextLine();
        String[] b = a.split(":");
        int h = Integer.parseInt(b[0]);
        int m = Integer.parseInt(b[1]);
        int time = 0;
        if (h >12) {
            if (m == 0) {
                time = h - 12;
            } else {
                time = h - 11;
            }
            for (int i = 0; i < time; i++) {
                System.out.print("Dang");
            }
        } else {
            System.out.print(String.format("Only %02d:%02d.  Too early to Dang.\n", h, m));   
           //如果整数不够2列就补上0 比如 printf("%02d" ,3)
        }
    }
}

7.据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。

二维数组

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int a = s.nextInt();
        int myarr[][] = new int[a][2];   //二维数组的定义
        double sum = 0;
        for (int i = 0; i < a; i++) {
            for (int j = 0; j < 2; j++) {
                myarr[i][j] = s.nextInt();
            }
        }
        for (int i = 0; i < a; i++) {
            sum = 2 * ((myarr[i][0] - 100) * 0.9);
            if (Math.abs(myarr[i][1] - sum) < 0.1 * sum) {
                System.out.println("You are wan mei!");
            } else if ((myarr[i][1] - sum) >= 0.1 * sum) {
                System.out.println("You are tai pang le!");
            } else {
                System.out.println("You are tai shou le!");
            }
            sum = 0;
        }
    }
}

8.强制类型转换

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int a = s.nextInt();
        int b = s.nextInt();
        double sum = 0;

        if (b > 0) {
            sum = (double) a / b;   //让整型相除变为浮点型
            System.out.printf(a + "/" + b + "=" + "%.2f", sum);
        }
        if (b < 0) {
            sum = (double) a / b;
            System.out.printf(a + "/(" + b + ")=" + "%.2f", sum);
        }
        if (b == 0) {
            System.out.println(a + "/" + b + "=Error");
        }
    }
}

9.大坑(Java的Scanner输入时,next()和nextLine()的区别)

首先是大家共所周知的区别

nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。

next()会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字符串

接下来是重头戏

next()在输入有效字符之后,将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。

nextLine()方法的结束符只是Enter键

所以

nextLine()自动读取了被next()去掉的Enter作为他的结束符,所以没办法从键盘输入值。

10.出生年

HashSet<Integer> set = new HashSet<Integer>();

关于HashSet的各种使用方法总结:
https://blog.csdn.net/jinqianwang/article/details/80030060

从一个数据中找出有几个不同的数,这是一个泛型的写法,表示 这个集合中只能保存 integer 类型的对象,其他对象无法保存,

// HashSet是set接口的实现类,也是我们最常用的set集合储存的是无序,唯一的对象
// HashSet是是使用equals来进行对象对比,确定数据是唯一的

image.png

import java.util.HashSet;  // 导入 HashSet 包
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner s = new Scanner(System.in);
        String r = s.nextLine();
        String[] input = r.split(" ");
        int y = Integer.parseInt(input[0]);
        int n = Integer.parseInt(input[1]);
        for (int i = y;; i++) {
            // HashSet是set接口的实现类,也是我们最常用的set集合储存的是无序,唯一的对象
            HashSet<Integer> set = new HashSet<Integer>(); 
            int num = i;
            for (int j = 0; j < 4; j++) {
                // HashSet 的 add 方法不能加重复值
                set.add(num % 10); // set内的元素不重复.
                num /= 10; // 算出每一位的数字的大小.
            }
            // 当set的大小等于n的时候
            if (set.size() == n) {
                System.out.printf("%d %04d", i - y, i);
                break;
            }
        }
    }
}

11.个位数统计

如何把字符串中的某个字符转为整型

-48 或者 -'0'

image.png

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner s = new Scanner(System.in);
        String shu = s.next();
        int[] n = new int[10];
        for (int i = 0; i < shu.length(); i++) {
        //用数组的 i 存放数字,第  i 个数组的值存放这个 i 出现的次数
            n[shu.charAt(i) - 48]++;    //单个字符型转为整型 -48 或者 -'0'
        }
        for (int i = 0; i < n.length; i++) {
            if (n[i] != 0) {
                System.out.println(i+":" +n[i]);
            }
        }
    }
}

12.字符串拆分赋值给字符数组

char[] c = n.toCharArray(); // n是字符串数组,c 是字符型数组

13.把整型变为字符串类型

     int i = 0;
    
     String s = String.valueOf(i);

    String s = Integer.toString(i);

     String s = "" + i;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容