文章目录
1. 保留小数前几位输出
怎样限制float类型的位数,String类中format方法就可以帮我们解决这个问题第一个参数传入保留几位小数,第二个参数位置传入要进行保留位数的浮点数
System.out.printf(String.format(“%.3f”,num)); //保留小数点后3位
或
System.out.printf(%.3f,num) //保留小数点后3位
2. 输入Scanner
以整数类型为例的代码演示:
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
等价于
int a = new Scanner(System.in).nextInt(); //整数类型输入
仔细看看以上两个代码比较哟!
同理输入字符串:
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
String s = new Scanner(System.in).nextLine(); //此行代码等价于上两行代码
同上原理的是:
输入整数:int-nextInt(), 输入字符串:String-nextLine(),输入Float类型:float-nextFloat(),
输入double类型:double-nextDouble,byte-nextByte()输入short类型:short-nextShort(),输入long类型:long-nextLong(),
输入布尔类型:boolean-nextBoolean()等
输入字符:(三种方法)
- Scanner sc = new Scanner(System.in);
char a = sc.next().charAt(0);(原理:next()函数返回输入中的下一个标记/字符作为字符串,并且charAt(0)函数返回该字符串中的第一个字符) - import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
char c = scanner.next().toCharArray()[0];
这个用起来一般般,有些浪费资源,没有第一种简单 - import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
char c = (char)new BufferedReader(new InputStreamReader(System.in)).read();
这样也可以输入,但是!这情况用于没有scanner包时使用,很麻烦,需要导入很多东西,不建议使用,
综上所述,记住第一种方法
输入数组
第一种方法:(不限制输入数组的长度)
System.out.println(“请输入几个数并用逗号隔开:”);
Scanner sc = new Scanner(System.in);
String str = sc.next().toString();
String[] arr = str.split(“,”);
int[] b = new int[arr.length];
for(int j = 0; j<b.length;j++) {
b[j] = Integer.parseInt(arr[j]);
System.out.println(b[j]+" ");
}
第二种方法:(限制输入的个数)
System.out.println(“请输入三个数:”);
Scanner in = new Scanner(System.in);
int[] b=new int[3];
for(int i=0;i<b.length;i++){
b[i]=in.nextInt();
}
3. 分层结构
Dao:数据访问层,较底层,基础操作(增删改查)
Service:服务层/业务层,完成功能设计,项目的功能需求在此完成
Controller:控制器层,请求和响应控制功能,负责前后端交互
4. 字符转ASCII码
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
char a = sc.next().charAt(0);
System.out.println(charToByteAscii(a));
}
public static byte charToByteAscii(char ch){
byte byteAscii = (byte)ch;
return byteAscii;
}
}
5. 四舍五入
将浮点数转换为整数类型,要求四舍五入
语法:
Math.round(x);
参数:
x 为一数值。
解释:
方法。返回对参数x四舍五入后所得的整数近似值。
6. 获得二进制的高8位/低8位
char c = ‘好’;
int lowBit = c & 0xFF; //获得二进制的低8位
int highBit = (c & 0xFF) >> 8; //获得二进制的高8位
7. String类型转换成其他类型
如果将String类型转换成其他类型:
- 可使用采用parse()例如:parseInt()或parsefloat()这种方法,。
parse()是SimpleDateFomat里面的方法,java.lang包下为每一个基本数据类型提供了相对应的包装类。该类中最常用的方法是parseXXX()方法,该方法可以将字符串转换成相应的基本数据类型,但是前提是字符串的形式必须是相应的数据类型 如果有两个参数:Integer.parseInt(s,16));//字符串s转16进制的int
例如:
//将字符串转换成Int型
String s = “123”;
int b = Integer.parseInt(s);
System.out.println(b);
//将字符串转换为Boolen
String s2 = “true”;
boolean flag = Boolean.parseBoolean(s2);
System.out.println(flag);
结果:123
true
如果将代码改为:
//将字符串转换成Int型
String s = “12.3”;//注意这里s内的12.3并非int型,而是Double型的
int b = Integer.parseInt(s);
System.out.println(b);
此时程序将报错!
而若改为:
String s = “12.3”;
double b = Double.parseDouble(s);//即将其转换为Double类型
System.out.println(b);
此时将正确执行并输出:12.3
例如:
parseFloat()方法用于返回与给定String表示形式相对应的float值,换句话说,我们可以说此方法用于将字符串值转换为float值。
parseFloat()方法是一个静态方法,也可以使用类名进行访问,如果尝试使用类对象访问该方法,那么也不会出错。
从字符串转换为float时, parseFloat()方法可能会引发NumberFormatException。
NumberFormatException:在此异常中,当string参数没有可解析的浮点数时。
-
仍然可以使用valueOf()
例:
double d = 12.34;//声明Double类型的变量d
String s= String.valueOf(d);//将d转换我字符串String类型的s
System.out.println(Double.valueOf(s).getClass());//Double.valueOf(s)将s再转为double,并输出其类型 -
Integer.decode([String]):将String解码为Integer;
8. java中substring的用法
- substring(int beginIndex) 一个参数
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。 - substring(int beginIndex,int length) 两个参数
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始, length:表示子字符串的长度。
参数:
beginIndex - 开始处的索引(包括)。
endindex 结尾处索引(不包括)。 左闭右开
返回:
指定的子字符串。
eg:
public class Main {
public static void main(String[] args) {
String s = "unhappy";
System.out.println(s.substring(3));
System.out.println(s.substring(0,4));
}
}
打印结果:
9. java中的indexOf方法
1、 indexOf(String str): 返回指定字符str在字符串中(方法调用者)第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回 -1。
2、indexOf(String str, int index): 返回从 index 位置开始查找指定字符str在字符串中第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回 -1。
eg:
String s = "01234567890123456789";
System.out.println(s.indexOf("123"));
System.out.println(s.indexOf("123",5));
上面程序的结果为1和11
10. java字符大小写转换
- Java String toLowerCase()方法
Java String toLowerCase()方法将字符串中的所有字符转换为小写字符,而非字母的字符不受影响。
字符串 toLowerCase() 方法的语法为:string.toLowerCase(),其中toLowerCase()参数不带任何参数,toLowerCase()返回值返回一个字符串,其中所有大写字母都转换为小写字母 - Java String toUpperCase()方法
toUpperCase() 则将字符串中的所有字符全部转换成大写,而非字母的字符不受影响
11. java 进制转换程序
11.1 十六进制转换
- 转换为十进制:(3中方法)
1) Integer.parseInt()方法:十六进制整数转换为对应的十进制整数,所占域宽为15;
String s = "ABCDEF";
int i = Integer.parseInt(s,16);
System.out.printf("%15d",i); //备注:printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数。
2)Integer.valueOf(“FFFF”,16).toString(); //valueOf()方法返回Integer类型,调用toString()返回字符串
3)Integer.toString(0xFFFF); //该方法可直接传入表示十六进制数字的基本数据类型,方法返回字符串
使用以上3中方法需要注意去掉需要转换的数字的进制标志位
eg:
//输入一个十六进制数a,和一个八进制数b,输出a,b的十进制
String s = new Scanner(System.in).nextLine();
String[] nums = s.split(" ");
System.out.println(Integer.parseInt(nums[0],16));
System.out.println(Integer.parseInt(nums[1],8));
结果出现NumberFormatException错误:
正确代码应为:
Scanner in = new Scanner(System.in);
String str = in.nextLine();
String []a = str.split("[ ]");
int c = Integer.parseInt(a[0].substring(2,a[0].length()),16);
int d = Integer.parseInt(a[1].substring(1,a[1].length()),8);
System.out.println(c+"\n"+d);
- 转换为八进制:转换之前的数据类型.toOctalString(i)
- 转换为二进制:转换之前的数据类型.toBinaryString(i)
11.2 十进制转换
- 转换为二进制:转换之前的数据类型.toBinaryString(i)
- 转换为八进制:转换之前的数据类型.toOctalString(i)
- 转换为十六进制:转换之前的数据类型.toHexString(i)
eg:
long i = 12345L;
System.out.println(Long.toBinaryString(i)); //返回i的二进制的字符串表示
System.out.println(Long.toOctalString(i)); //返回i的八进制的字符串表示
System.out.println(Long.toHexString(i)); //返回i的十六进制的字符串表示
11.3 八进制转换
- 转换为二进制:转换之前的数据类型.toBinaryString(i)
- 转换为十进制:(同十六进制转十进制)
- 转换为十六进制:转换之前的数据类型.toHexString(i)
11.4 二进制转换
- 转换为十六进制:转换之前的数据类型.toHexString(i)
- 转换为十进制:(同十六进制转十进制)
- 转换为八进制:转换之前的数据类型.toOctalString(i)
对于二进制、八进制和十六进制之间的转换,可先转换为十进制,在用十进制转多进制的相应方法进行转换
12. 占位符的使用
13. 求整数的个位,十位,百位
int i = new Scanner(System.in).nextInt();
System.out.println(i%10); //求个位
System.out.println((i/10)%10); //求十位
14. 计算三角形周长和面积
海伦公式求面积:
p = (a + b + c)/2
s = sqrt(p*(p-a)(p-b)(p-c))
double p,cir,area;
cir = (double)(b+c+d); //周长
p = cir/2;
area = Math.sqrt(p*(p-d)*(p-b)*(p-c)); //面积
15. 判断是否为质数
质数:除了1和它本身外,不能被其他的数整除的数。
思想:质数不能被2整除,也不能被(2,质数本身)这个范围内的任意整数整除,所以可以利用循环:
下列输入一个整数,通过返回true或者false判断是否是质数
public class Main {
public static void main(String[] args) {
Main main = new Main();
Scanner scan = new Scanner(System.in);
int number = scan.nextInt();
System.out.println(main.isPrimeNumber(number));
}
public Boolean isPrimeNumber(int number) {
int i = 2;
for(;number%i!=0;i++);
return i==number ? true : false;
}
}