初学Java时所做的一些笔记,内容主要以题目形式呈现。
AcWing 656
这是原题链接,主要考察计算精度处理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import java.util.Scanner;
public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); double N = sc.nextDouble(); int n = (int)(N * 100); int[] arr = new int[] {10000, 5000, 2000, 1000, 500, 200, 100, 50, 25, 10, 5, 1}; for(int i = 0; i < arr.length; i++) { if(i == 0) System.out.println("NOTAS:"); if(i == 6) System.out.println("MOEDAS:"); if(i < 6) System.out.printf("%d nota(s) de R$ %d.00\n", n / arr[i], arr[i] / 100); else System.out.printf("%d moeda(s) de R$ %.2f\n", n / arr[i], arr[i]/ 100.0); n -= n / arr[i] * arr[i]; } } }
|
AcWing 727
经典输出菱形的题目,这是原题链接,受到\(|x| + |y| = 1\)代表边长为\(\sqrt{2}\)、中心在原点且各个顶点都在坐标轴上的正方形可以得到较为优雅的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import java.util.Scanner;
public class Main { static boolean star(int i, int j, int n) { return Math.abs(i - n / 2) + Math.abs(j - n / 2) <= n / 2; } public static void main(String args[]) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { System.out.printf("%c", star(i, j, n)? '*': ' '); } System.out.println(); } } }
|
AcWing 719
这是原题链接,注意
C/C++
和 Java
中,取整操作都是向下取整,对于负数取整结果可能小于零。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import java.util.Scanner;
public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for(int i = 0; i < n; i++) { int a = sc.nextInt(), b = sc.nextInt(), ans = 0; if(a > b) { int t = a; a = b; b = t; } for(int j = a + 1; j < b; j++) if(j % 2 == 1 || j % 2 == -1) ans += j; System.out.println(ans); } } }
|