如何将整数数组转化为一个整数可能标题说的有点不清楚,举个例子:[1,2,3,4]
转化为整数 1234
我之前的思路就是写一个逆循环,每次都加加上序号对应的值和10的序号次方,代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 package com.company.playground;public class IntArrayToInt { public static void main (String[] args) { int [] arr = {1 ,2 ,3 ,4 }; int len = arr.length; int result = 0 ; for (int i = len - 1 ; i >= 0 ; i--) { result += arr[i] * Math.pow(10 , len-i-1 ); } System.out.println(result); } }
但是老师上课的时候提供了另一种思路:写一个正序循环,每次加上序号对应的数组的值,然后在乘10,代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package com.company.playground;public class IntArrayToInt { public static void main (String[] args) { int [] arr = {1 , 2 , 3 , 4 , 5 , 6 }; int len = arr.length; int result = 0 ; for (int i = 0 ; i < len; i++) { result *= 10 ; result += arr[i]; } System.out.println(result); } }
数字的变化是这样的,括号中代表一个循环
( 0 –> 1 ) –> ( 10 –> 12 ) –> ( 120 –> 123 ) –> ( 1230 –> 1234 )
实话说当时我愣是盯着屏幕看了好久才研究出来,思路真是奇特
如何快速随机生成两个随机正整数,使第一个可以被第二个整除说实话当初我的思路就是写一个循环,让其不停地生成两个随机数知道满足条件为止,但是老师说这样子的话会耗费一定的时间
老师给的思路是就使用那两个随机数,将第一个随机数变为合适的形式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 package com.company.playground;import java.util.Random;public class RandomIntDivision { public static void main (String[] args) { Random random = new Random(); int min = 1 ; int max = 999 ; int optNum1 = random.nextInt(max - min + 1 ) + min; int optNum2 = random.nextInt(max - min + 1 ) + min; if (optNum1 < optNum2) { int tmp = optNum1; optNum1 = optNum2; optNum2 = tmp; } if (optNum1 % optNum2 != 0 ) { optNum1 = optNum1 - optNum1 % optNum2; } System.out.println(optNum1 + " " +optNum2); } }
将两个数做余运算,在用第一个数减去余数,这个方法的缺陷就是会产生大量的相等的两个数
处理输入流的底层方法不论是 Scaner
或者是 InputStreamReader
,都是对输入流的高层封装,今天老师带我们体验了一个最底层处理输入流的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package com.company.playground;import java.io.InputStream;public class BasicInputStream { public static void main (String[] args) { try { InputStream inputStream; while (true ) { inputStream = System.in; int charCode; charCode = inputStream.read(); System.out.println(charCode); } } catch (Exception e) { e.printStackTrace(); } } }
这是一个死循环,你先想控制台中输入 ‘123’,然后控制台会打印出 49 50 51 10
(*nix环境),如果是在Windows上做实验则为 49 50 51 13 10
,前三个是’1’, ‘2’, ‘3’对应对ascii,而’13’对应的是回车,’10’对应的是换行,最底层永远是以byte为单位处理数据的。
如何格式化输出浮点数一般如果做浮点数除法,可能输出会变成这样:3.444444444444444444444,如果我们想输出变得漂亮一点,并不考虑四舍五入,使其格式化输出,可以用 DecimalFormat
做如下操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 package com.company.playground;import java.text.DecimalFormat;public class DisplayDecimal { public static void main (String[] args) { double arg = 1.0 /3.0 ; System.out.println(arg); DecimalFormat df = new DecimalFormat("#.##" ); String rate = df.format(arg); System.out.println(rate); } }
如何获取系统当前的时间1 2 3 4 5 6 7 package com.company.playground;public class GetCurrnetSystemTime { public static void main (String[] args) { System.out.println(System.currentTimeMillis()); } }
very nice!