上机时间
package com;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.*;
public class acm {
public static void main(String[] args) {
acm acm = new acm();
//acm.format();
//acm.bigIntegerTest();
//acm.jinzhi();
//acm.sortArray();
acm.input();
}
//ACM输入流
public void input(){
System.out.println(
" 格式1:Scanner sc = new Scanner (new BufferedInputStream(System.in));\n" +
" 格式2:Scanner sc = new Scanner (System.in);\n" +
" 在读入数据量大的情况下,格式1的速度会快些。\n" +
"\n" +
" 读一个整数: int n = sc.nextInt(); 相当于 scanf(\"%d\", &n); 或 cin >> n; \n" +
" 读一个字符串:String s = sc.next(); 相当于 scanf(\"%s\", s); 或 cin >> s; \n" +
" 读一个浮点数:double t = sc.nextDouble(); 相当于 scanf(\"%lf\", &t); 或 cin >> t; \n" +
" 读一整行: String s = sc.nextLine(); 相当于 gets(s); 或 cin.getline(...); \n" +
"\n" +
" 判断是否有下一个输入可以用sc.hasNext()或sc.hasNextInt()或sc.hasNextDouble()或sc.hasNextLine()");
/* 格式1:Scanner sc = new Scanner (new BufferedInputStream(System.in));
格式2:Scanner sc = new Scanner (System.in);
在读入数据量大的情况下,格式1的速度会快些。
读一个整数: int n = sc.nextInt(); 相当于 scanf("%d", &n); 或 cin >> n;
读一个字符串:String s = sc.next(); 相当于 scanf("%s", s); 或 cin >> s;
读一个浮点数:double t = sc.nextDouble(); 相当于 scanf("%lf", &t); 或 cin >> t;
读一整行: String s = sc.nextLine(); 相当于 gets(s); 或 cin.getline(...);
判断是否有下一个输入可以用sc.hasNext()或sc.hasNextInt()或sc.hasNextDouble()或sc.hasNextLine()
*/
// Scanner sc = new Scanner(System.in);
// int n = sc.nextInt();
// for (int i = 0; i < n; i++) {
// String op = sc.next();
// int a = sc.nextInt();
// int b = sc.nextInt();
// if (op.charAt(0) == '+') {
// System.out.println(a + b);
// } else if (op.charAt(0) == '-') {
// System.out.println(a - b);
// } else if (op.charAt(0) == '*') {
// System.out.println(a * b);
// } else if (op.charAt(0) == '/') {
// if (a % b == 0)
// System.out.println(a / b);
// else
// System.out.format("%.2f", (a / (1.0 * b))).println();
// }
// }
//String n2 = sc.next();
String n2 ="21852";
//String刷成char[]
char[] charnum = n2.toCharArray();
System.out.println(Arrays.toString(charnum));
//String刷成int
int i = Integer.parseInt(n2);
System.out.println(i);
// char[] 刷成int[]
int[] ints = new int[charnum.length];
int index =0;
for(char num:charnum){
ints[index++] = (int)num-48;
}
System.out.println(Arrays.toString(ints));
}
//数组排序
public void sortArray(){
int[] arr = {1,3,8,5,2,7};
System.out.println("array默认升序_________________________________________________");
//默认升序,从小到大
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println("List默认升序_______________________________________________");
List<Integer> arrList = new ArrayList<>();
arrList.add(1);arrList.add(4);arrList.add(2);arrList.add(78);arrList.add(23);
//集合工具类Collections,对集合进行升序排序
Collections.sort(arrList);
System.out.println(Arrays.toString(arrList.toArray()));
System.out.println("array降序_______________________________________________");
Integer[] arr2 = new Integer[]{1,2,3,8,5};
//lamada表达式只支持包装类array重写
//Arrays.sort(arr2,((o1, o2) -> o2-o1));
//与上述效果一致,支支持包装类元素的array逆序
Arrays.sort(arr2,Collections.reverseOrder());
System.out.println(Arrays.toString(arr2));
System.out.println("List降序__________________________________________________");
Collections.sort(arrList,Collections.reverseOrder());
System.out.println(Arrays.toString(arrList.toArray()));
}
//大数运算
public void bigIntegerTest(){
int a = 1111111111, b = 222222222, c = 333333333;
BigInteger x, y, z, ans;
x = BigInteger.valueOf(a);
y = BigInteger.valueOf(b);
z = BigInteger.valueOf(c);
ans = x.add(y); System.out.println(ans);
ans = z.divide(y); System.out.println(ans);
ans = x.mod(z); System.out.println(ans);
if (ans.compareTo(x) == 0) System.out.println("1");
}
//进制转换
public void jinzhi(){
Integer num = new Integer(154);
System.out.println("num:"+num);
// 把 num 当做 10 进制的数转成 base 进制的 st(base <= 35).
String st=Integer.toString(num,2);
System.out.println("10Integer_to_x(2)String:"+st);
// 把 st 当做 base 进制,转成 10 进制的 int(parseInt 有两个参数 , 第一个为要转的字符串 , 第二个为说明是什么进制 ).
int res = Integer.parseInt(st,2);
System.out.println("x(2)String_to_10Int:"+res);
// st 是字符串, base 是 st 的进制 .
BigInteger m=new BigInteger(st,2);
System.out.println("x(2)String_to_10Integer:"+m);
}
//double格式化
public void format(){
NumberFormat formatter = new DecimalFormat("000000");
String s = formatter.format(-1234.567); // -001235
System.out.println(s);
formatter = new DecimalFormat("##");
s = formatter.format(-1234.567); // -1235
System.out.println(s);
s = formatter.format(0); // 0
System.out.println(s);
formatter = new DecimalFormat("##00");
s = formatter.format(0); // 00
System.out.println(s);
formatter = new DecimalFormat(".00");
s = formatter.format(-.567); // -.57
System.out.println(s);
formatter = new DecimalFormat("0.00");
s = formatter.format(-.567); // -0.57
System.out.println(s);
formatter = new DecimalFormat("#.#");
s = formatter.format(-1234.567); // -1234.6
System.out.println(s);
formatter = new DecimalFormat("#.######");
s = formatter.format(-1234.567); // -1234.567
System.out.println(s);
formatter = new DecimalFormat(".######");
s = formatter.format(-1234.567); // -1234.567
System.out.println(s);
formatter = new DecimalFormat("#.000000");
s = formatter.format(-1234.567); // -1234.567000
System.out.println(s);
formatter = new DecimalFormat("#,###,###");
s = formatter.format(-1234.567); // -1,235
System.out.println(s);
s = formatter.format(-1234567.890); // -1,234,568
System.out.println(s);
// The ; symbol is used to specify an alternate pattern for negative
// values
formatter = new DecimalFormat("#;(#) ");
s = formatter.format(-1234.567); // (1235)
System.out.println(s);
// The ' symbol is used to quote literal symbols
formatter = new DecimalFormat(" '# '# ");
s = formatter.format(-1234.567); // -#1235
System.out.println(s);
formatter = new DecimalFormat(" 'abc '# ");
s = formatter.format(-1234.567); // - abc 1235
System.out.println(s);
formatter = new DecimalFormat("#.##%");
s = formatter.format(-12.5678987);
System.out.println(s);
}
}