1. 数据的输入/输出
标准输入输出流
字符输入: char c = (char)System.in.read();
字符串输入: BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String str = buf.readLine();
使用System.out输出
使用javax.swing.JOptionPane
showInputDialog方法获取字符串
showMessageDialog弹出消息显示对话框.
2. 常用的数学方法
java.lang.Math类的主要方法
int abs(int i)
int ceil(int i1,int i2) 大于等于d的最大整数
double floor(double d) 小于等于d的最大整数
double random() 返回大于等于 0.0 且小于 1.0的 double 值
long round(double d) 最靠近d的长整数
double log(double d)
double exp(double x)
double pow(double a, double b)
double sqrt(double a)
double cos(double d)
/*由于让系统产生随机数使用
0~9的随机数 (int)(Math.random()*10);
0~999的随机数 (int)(Math.random()*1000);
a~b的随机数 (int)(Math.random()*(b-a));
其实Math的random方法用的就是util包中的Random类
因此可以Random.nextDouble()替换Math.random()
*/
3. 交换两个数值的三种方法
1.借助temp
2.a = a+b; //有局限性
b = a-b;
a = a-b;
3.a = a^b; //技巧性写法
b = a^b;
a = a^b;
4. 进制转换的问题
//法一: 查表法+递归函数 实现十进制与任意进制的转换, 可以轻度使用,因为递归太消耗资源
//本想返回String类型, 但是递归过程中每个函数相互独立,所有递归在一定范围内可以简化代码
public static void method1(int i,int radix){
char[] charmap = new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
if(i<0)
throw new RuntimeException("系统正在升级中,目前暂不支持计算负数的功能");
else if(i>0){
method1(i/radix,radix);
System.out.print(charmap[i%radix]);
}
}
//法二: 模仿计算机的位运算实现十进制与任意进制的转换. 发现思考得更久,不过发现花的时间越长, 但是比方法一好, 但是和API的Integer.toSring还有差距.以后再说.
//思路: 1.进行&操作 2.无符号右移
//判断条件: 如果数不为0的话继续循环. 60 16
public static String method2(int i,int radix){
if(i==0){
System.out.println('0');
return null;
}
char[] charmap = new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
StringBuilder sb = new StringBuilder();
while(i!=0){
sb.append(charmap[i&radix-1]);
//得到偏移量,用到了初等数学知识, 不过我觉得还是定义数组好, 可以思考一下, 不就是用一点内存.
i=i>>>(int)(Math.log(radix)/Math.log(2));
}
return sb.reverse().toString();
}
5.两个三角形
6. 魔方阵初识 和 螺旋矩阵的思考
7. 字符与整型变量的转换