文章目录
将基本数据型态转换成 String
用到 String.valueOf() 这个参数多载的方法
有下列几种
- String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串
- String.valueOf(char c) : 将 char 变量 c 转换成字符串
- String.valueOf(char[] data) : 将 char 数组 data 转换成字符串
- String.valueOf(char[] data, int offset, int count) :将 char 数组 data 中 由 data[offset] 开始取 count 个元素 转换成字符串
- String.valueOf(double d) : 将 double 变量 d 转换成字符串
- String.valueOf(float f) : 将 float 变量 f 转换成字符串
- String.valueOf(int i) : 将 int 变量 i 转换成字符串
- String.valueOf(long l) : 将 long 变量 l 转换成字符串
- String.valueOf(Object obj) : 将 obj 对象转换成 字符串, 等于 obj.toString()
如:
int i = 10;
String str = String.valueOf(i);
//这时候 str 就会是 "10"
将String 转换成 数字的基本数据型态
大多需要使用基本数据型态的包装类别
- byte :
Byte.parseByte(String s) : 将 s 转换成 byte
Byte.parseByte(String s, int radix) : 以 radix 为基底 将 s 转换为 byte
比如说: Byte.parseByte(“11”, 16) 会得到 17(即16进制的:1×16^0 + 1×16^1
)
这一类的方法如果无法将 s 分析 则会丢出 NumberFormatException - double :
Double.parseDouble(String s) : 将 s 转换成 double - float :
Double.parseFloat(String s) : 将 s 转换成 float - int :
Integer.parseInt(String s) : 将 s 转换成 int - long :
Long.parseLong(String
输入一串以英文逗号隔开的整数,
如3,4,5
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一串用英文逗号隔开的整数:");
//String next():接收键盘输入的内容,并以字符串形式返回
String input = scanner.next();
//split():根据匹配给定的正则表达式来拆分此字符串
String[] string = input.split(",");
// 定义一个数组,用来存储取出来的string.length个数
int[] nums = new int[string.length];
System.out.print("数字转换格式后:");
for (int i = 0; i < string.length; i++) {
//将字符串参数作为有符号的十进制整数进行解
nums[i] = Integer.parseInt(string[i]);
System.out.print(nums[i] + " ");
}
输入一串以一个空格隔开的整数,
如3 4 5
Scanner sc = new Scanner(System.in);
String inputString = sc.nextLine();
String stringArray[] = inputString.split(" ");
int num[] = new int[stringArray.length];
for (int i = 0; i < stringArray.length; i++) {
num[i] = Integer.parseInt(stringArray[i]);
}
录入多个数值,输入0表示录入结束
//方法1
Scanner scanner = new Scanner(System.in);
//因为不知道数据个数,无法指定初始化大小,所以不能用int[]
ArrayList<Integer> input=new ArrayList<>();//动态数组
// 接受多组数据(若当前是0,就不读了)
while(scanner.hasNext()){
int tmp=scanner.nextInt();
if(tmp==0)
break;
else {
input.add(tmp);
}
}
// Integer[] array = input.toArray(new Integer[]{});//转到右边()里new Integer[]{}里,然后用左边的array接住了
//方法2
// while (true) {
// System.out.print("请输入数值:");
// int number = input.nextInt();
// if (number != 0){
// array.add(number);
// }else {
// break;
// }
// }
//方法3
// while(!sc.hasNext("0")){//当读的数不为0时,就存到n里
// int n=sc.nextInt();
// }
Scanner
https://www.runoob.com/java/java-scanner-class.html
next() 与 nextLine() 区别
next():
- 阻塞直到读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next() 不能得到带有空格的字符串。
nextLine():
- 以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
- 可以获得空白。
对于runoob com
next方式接收得到:runoob
nextLine方式接收:runoob com
注意
- 在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据。
- 如果要输入 int 或 float 类型的数据,在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:
参考:Java核心技术·卷1
- Scanner (InputStream in) 用给定的输入流创建一个Scanner对象。
- String nextLine( ) 读取输入的下一行内容。
- String next( ) 读取输入的下一个单词(以空格作为分隔符)。
- int nextInt()
- double nextDouble( )读取并转换下一个表示整数或浮点数的字符序列。
- boolean hasNext()检测输入中是否还有其他单词。
- boolean hasNextInt()
- boolean hasNextDouble( )检测是否还有表示整数或浮点数的下一个字符序列。
System.out.print("输入整数:");
if (scan.hasNextInt()) {
// 判断输入的是否是整数
i = scan.nextInt();
// 接收整数
System.out.println("整数数据:" + i);
} else {
// 输入错误的信息
System.out.println("输入的不是整数!");
}
取整
- 四舍五入:
- Math.round(result);( 原数先+0.5后再四舍五入也可以达到该效果)
记忆方式:单词round,是“附近”的意思
返回为long类型
(int)(num * 1.0 + 0.5) //强转为int,截取掉了小数部分
- 向上取整 :Math.ceil(result)
记忆方式:单词ceil,是“天花板”的意思
返回为double类型
int num=7;
int div=2;
int res=(int)Math.ceil( num*1.0/div ); // 7.0/2=3.5 ==> 4
System.out.println(res);
- 向下取整
Math.floor(result);
记忆方式:单词floor,是“地板”的意思
返回为double类型
取绝对值
Math.abs()
开平方
Math.sqrt()
生成随机数
Math.random()
平方
double pow(double base, double exponent) 返回第一个参数的第二个参数次方。
正则表达式语法
https://www.runoob.com/java/java-regular-expressions.html