java学习第一天
使用异或运算简单加密字符串
实验代码
/*
* 使用标准输出流扫描用户用户的输入的字符串
* 再通过异或运算吧字符串与一个指定的值进行异或运算
* 从而改变字符串每个字符的值
* 这样就可以得到一个加密或者解密后的值
* 然后再通过标准输出,显示到控制器上。
* */
import java.util.Scanner;
public class Example_JianDanJiaMi {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个英文字符串或解密字符串");
String passwordString = scanner.nextLine();
char[] array = passwordString.toCharArray();//获取字符串数组
for (int i = 0; i < array.length; i++) {
array[i] = (char)(array[i]^20000);//对每个数组元素进行异或运算
}
System.out.println("加密或者解密的结果如下:");
System.out.println(new String(array));//输出
}
}
实验结果
请输入一个英文字符串或解密字符串
www.beiwangshan.xyz
加密或者解密的结果如下:
乗乗乗与乂久义乗乁乎乇乓么乁乎与乘乙乚
判断身份证位数
import java.util.Scanner;
public class InputCode {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
System.out.println("请输入你的身份证号码:");
String line = scanner.nextLine();
//打印对输入文本的描述
System.out.println("原来你的身份证号码是"+line.length()+"位数字啊!");
}
}
输出错误信息与调试信息
package JiBenYuFa;
/*
* System类中的out 和err两个成员变量来完成调试信息和错误信息的输出
* 两个都是System的类变量,即都是用static修饰的
* out是标准调试信息的输出流
* err是标准错误信息输出流
* out 与 err 不用创建System类的实例对象就可以直接使用
* out输出的是一行黑色的字体
* err输出的是一行红色的字体,输出为紧急错误信息
* */
public class PrintErrorAndDebug {
public static void main (String [] argS) {
System.out.println("main()方法开始运行了");
//输出错误信息
System.err.println("在运行期间手动输入一个错误信息:");
System.err.println("\t该软件没有买保险,请注意安全!");
System.out.println("PrintErrorAndDebug.main()");
System.out.println("main()方法运行结束!");
}
}
运用三元运算符判断奇数和偶数
package JiBenYuFa;
import java.util.Scanner;
/*
* 三元运算符是if...else条件语句的简写格式
* 条件运算?运算结果1:运算结果2;
* 如果条件运算的结果是true,则返回的结果是1,否则返回结果2
* 通过nextlong()方法直接获取了整型数据
* 通过三元运算符判断该数字与2的余数,如果余数为o说明其实偶数
* 否则是奇数
*
* % 运算符的用途十分广泛,可以实现数据分页
* 最简单的方法是可以通过计算奇偶数的方法把数组交叉分为两个数组
* 还可以限制数字的范围, N % 5 == 0 可以限制数字 N 在 0 ~ 4 的范围之类
*
*
* */
public class ParityCheck {
public static void main(String [] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数");
long number = scanner.nextLong();
String checkString = (number%2 == 0) ? "这个数是偶数" : "这个数是奇数";
System.out.println(checkString);
}
}
实现精确的小数运算
package JiBenYuFa;
/*
* 本例 实现精确的小数运算
*
* */
import java.math.BigDecimal; //导入类方法
public class AccuratelyFloat {
public static void main(String[] args) {
double money = 2;
double price = 1.1;
double result = money - price;
System.out.println("非精确计算:");
System.out.println("剩余金额:"+result);
//精确浮点计算方法
BigDecimal money1 = new BigDecimal(2);
BigDecimal price1 = new BigDecimal(1.1);
BigDecimal result1 = money1.subtract(price1); //内置方法
System.out.println("精确计算");
System.out.println("剩余金额:"+result1);
}
}
不用乘法运算符实现 2 * 16
/**
* @Title: Example.java
* @Package JiBenYuFa
* @Description: TODO(不用乘法运算符实现 2 * 16)
* @author 忘山
* @date 2020年1月27日
* @version V1.0
*/
package JiBenYuFa;
import java.util.Scanner;
/**
* @ClassName: Example
* @Description: TODO(不用乘法运算符实现 2 * 16)
* @author 忘山
* @date 2020年1月27日
* @类说明:
* 通常的乘法运算是用 * 运算符,或者是使用BigDecimal 的multiply() 方法
* 接受用户输入的一个整数,然后对该整数执行位运算中的左移操作,并输出运算结果
* 一个数左移运算n 次,相当于这个数乘以 2的 n 次方
* 相反的如果执行右移运算,相当于这个数除以 2 的 n 次方
*
*/
public class Example {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
long number = scanner.nextLong();
System.out.println("你输入的数字是:" + number);
System.out.println("该数字乘以 2 的运算结果是:"+ (number<<1));
System.out.println("该数字乘以 4 的运算结果是:"+ (number<<2));
System.out.println("该数字乘以 8 的运算结果是:"+ (number<<3));
System.out.println("该数字乘以 16 的运算结果是:"+ (number<<4));
}
}
不用第三变量交换两个数)
/**
* @Title: VariableExchange.java
* @Package JiBenYuFa
* @Description: TODO(不用第三变量交换两个数)
* @author 忘山
* @date 2020年1月27日
* @version V1.0
*/
package JiBenYuFa;
import java.util.Scanner;
/**
* @ClassName: VariableExchange
* @Description: TODO(不用第三变量交换两个数)
* @author 忘山
* @date 2020年1月27日
* @类说明:
* 在一般的交换两个数的时候,需要借助第三个变量来辅助交换
* 这样的方法会创建一个临时变量来共同完成,但是这样就增加了系统资源的开销
* 如果交换的是两个整数类型的变量,就可以死不需要使用临时变量
* 具体方法就是使用 异或运算符 :^
* 异或 “^” 和其他位运算符并不会改变变量本身的值,即 A^B 本身没有任何意义
* 所以需要 将结果赋值给变量
*/
public class VariableExchange {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入变量A的值:");
long A = scanner.nextLong();
System.out.println("请输入变量B的值:");
long B = scanner.nextLong();
System.out.println("交换前:A = "+A+"\t B = "+B);
System.out.println("执行交换");
//核心代码
A = A ^ B;
B = B ^ A;
A = A ^ B;
System.out.println("交换完成");
System.out.println("交换后:A = "+A+"\t B = "+B);
}
}
判断是否为闰年
/**
* @Title: LeapYear.java
* @Package JiBenYuFa
* @Description: TODO(用一句话描述该文件做什么)
* @author 忘山
* @date 2020年1月27日
* @version V1.0
*/
package JiBenYuFa;
import java.util.Scanner;
/**
* @ClassName: LeapYear
* @Description: TODO(判断是否是闰年)
* @author 忘山
* @date 2020年1月27日
* @类说明:
* 满足两种条件的整数可以称为闰年
* 第一:能被 4 整除但不能被 100 整除
* 第二:能被400整除
* 计算公式:
* year % 4 == 0 && year % 100 != 0 && year % 400 == 0
*
*/
public class LeapYear {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个年份:");
long year = scanner.nextLong();
if (year % 4 == 0 && year % 100 != 0 && year % 400 == 0) {
System.out.println(year+"是闰年");
}
else {
System.out.println(year+"不是闰年");
}
}
}