以下是大家在学习Java SE 的时候经常遇到的逻辑思维题##
// 运算s=a+aa+aaa+aaaa+aa...n个a的结果
public static int getS(int x, int n){
int fang = 1;
int sum = 0;
int sum1 = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
fang = fang*10;
sum = sum + x*fang/10;
}
sum1 = sum1 + sum;
System.out.print(sum + " ");
fang = 1;
sum = 0;
}
return sum1;
}
// 计算水仙花数
public static boolean isShuiXianHua(int n) {
int i, y;
int sum = 0;
y = n;
while(n!=0){
i = n%10;//获取每位数字
n = n / 10;
sum = sum + i*i*i;
}
if (sum == y) {
return true;
}
return false;
}
// 1 + 1/2 - 1/3 + 1/4 - 1/5 + ... 的前n项和
public static double getQianNHe(int n){
double sum = 0;
double x = 0;
for (int i = 1; i <= n; i++) {
x = 1/(double)(i*2-1);
if (i%2==1) {
sum = sum + x;
}else{
sum = sum - x;
}
}
return sum;
}
// 计算1!+2!+...+n!的和
public static int getLeiJieCheng(int n){
int sum = 0;
int cheng = 1;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
cheng = cheng*j;
}
sum = sum + cheng;
cheng = 1;
}
return sum;
}
// 判断一个年份是否为闰年
public static boolean isLeaPYear(int year){
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
return true;
}else{
return false;
}
}
// 输入一个日期如:2017-08,输出当前月份的天数
private static int getSumDays(int year,int month,int day){
int[] a= {0,31,29,31,30,31,30,31,31,30,31,30,31};// 闰年每月天数
int[] b= {0,31,28,31,30,31,30,31,31,30,31,30,31};// 平年每月天数
int sumDays = 0;
for (int i = 0; i < month; i++) {
if (isLearYear(year)) { // 判断是否闰年
sumDays += a[i];
}else{
sumDays += b[i];
}
}
return (sumDays + day);
}
// 获取一个随机生成自定义长度的字符串
public static String getRandomString(int length){
char[] ch = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
Random rand = new Random();
StringBuffer buf = new StringBuffer();
for (int i = 0; i < length; i++) {
buf.append(ch[rand.nextInt(ch.length)]);
}
return buf.toString();
}
// 分解质因数
public static void getNumber(int number){
int a = 2;
System.out.print(number + "=");
while(number > a){
if(number % a == 0){
System.out.print(a + "*");
number = number / a;
}else{
a++;
}
}
System.out.print(a);
}
// 计算number中包含digit的个数
public static int countdigit(int number, int digit){
int index = 0;
int count = 0;
while(number != 0){//number不为0
index = number % 10;
number = number / 10;
if (index == digit) {//如果当前位数为digit
count++;
}
}
return count;
}
// 打印金字塔数字
public static void printPyramid(int n){
//确定要打印多少行
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n-i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print(i + " ");
}
System.out.println();
}
}
//ֱ插入排序算法
public static void insertSort(int[] arr){
for (int i = 1; i < arr.length; i++) {
int m = i;
while(m > 0 && arr[m] < arr[m - 1]){
int temp = arr[m];
arr[m] = arr[m - 1];
arr[m - 1] = temp;
m--;
}
}
}
//冒泡排序
public static void maopaoSort(int[] arr){
for (int i = 1; i < arr.length; i++) {
for (int j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//二分查找
public static int binnarySearch(int[] arr, int x, int min, int max){
if (min > max) {
return 0;
}
int mid = (min + max) / 2;
if (arr[mid] == x) {
return mid;
}else if (arr[mid] >= x) {
return binnarySearch(arr, x, min, mid - 1);
}else{
return binnarySearch(arr, x, mid + 1, max);
}
}
//打印杨辉三角
public static void printYangHui(int n){
int [][] iArray = new int[n][];
for(int i=0;i<n;i++) {
iArray[i] = new int[i+1];
for(int j=0;j<=i;j++) {
if(j==0 || j==i) {
iArray[i][j]=1;
System.out.print(iArray[i][j]+" ");
}else{
iArray[i][j]=iArray[i-1][j]+iArray[i-1][j-1];
System.out.print(iArray[i][j]+" ");
}
}
System.out.println();
}
}
//逆序输出一个整数
public static int[] niXu(int[] args){
int[] a = new int[args.length];
for (int i = 0, j = a.length-1; i < args.length && j >= 0; i++,j--) {
a[j] = args[i];
}
return a;
}
// 将字符串变成数字(类似paseInt)
public static int change(String str){
int sum = 0;
for (int i = 0; i < str.length(); i++) {
sum = sum + (str.charAt(i) - 48);
sum = sum * 10;
}
return sum/10;
}
// 逆序输出一个正整数
public static int reverse(int number){
int sum = 0;
int index = 0;
while(number != 0){
index = number%10;
sum = sum + index;
sum = sum*10;
number = number/10;
}
return sum/10;
}
// 判断number的各位数的立方之和是否等于自身
public static boolean is(int number){
int x = number;
int sum = 0;
int index = 0;
while (x!=0) {
index = x%10;
x = x / 10;
sum = sum + index*index*index;
}
if (number == sum) {
return true;
}else{
return false;
}
}
// 计算x的约数之和
public static int factorsum(int x){
int sum = 0;
//除了本身之外的可以被整出的为其约数
for (int i = 1; i <= x/2; i++) {
if (x % i == 0) {
sum = sum + i;
}
}
return sum;
}
// 递归算法获取斐波那契数
public static int getFib(int n) {
if (n == 1 || n == 2) {
return 1;
}
return (getFib(n - 1) + getFib(n - 2));
}
// 获取斐波那契数
public static int[] getFibArray(int n){
int[] aa = new int[n];
//计算斐波那契数
for (int i = 0; i < aa.length; i++) {
if (i == 0 || i == 1) {
aa[i] = 1;
}else{
aa[i] = aa[i - 1] + aa[i - 2];
}
}
for (int i = 0; i < aa.length; i++) {
System.out.println(aa[i]);
}
return aa;
}
// 打印数字n围成的棱形
public static void printLengXing(int n) {
// TODO Auto-generated method stub
// 打印上半部分
for(int i = 1; i <= n; i++){
if(i == 1){
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
System.out.println(n);
}else{
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
System.out.print(n);
for(int j = 1; j <= 2 * (i - 1) - 1; j++){
System.out.print(" ");
}
System.out.println(n);
}
}
// 打印下半部分
for(int i = n - 1; i >= 1; i--){
if(i == 1){
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
System.out.println(n);
}else{
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
System.out.print(n);
for(int j = 1; j <= 2 * (i - 1) - 1; j++){
System.out.print(" ");
}
System.out.println(n);
}
}
}
// 判断一个整数有多少个不相等的数字
public static int getSame(int x) {
// TODO Auto-generated method stub
HashSet<Integer> hs = new HashSet<Integer>();
int index = 0;
while (x != 0) {
hs.add(x % 10);
x = x / 10;
}
return hs.size();
}
//判断是否是回文数
public static boolean isHuiWen(int x){
String strX = x + "";
for (int i = 0; i < strX.length(); i++) {
if (strX.charAt(i) != strX.charAt(strX.length() - i - 1)) {
return false;
}
}
return true;
}
// 判断是否为素数
public static boolean isPrime(int x) {
// TODO Auto-generated method stub
for(int i = 2; i < x; i++){
if(x % i == 0){
return false;
}
}
return true;
}
// 计算一个正整数的下标之和
public static int getIndexSum(int x) {
// TODO Auto-generated method stub
int sum = 0;
int index;
while(x!=0){
index = x % 10;
x = x / 10;
sum += index;
}
return sum;
}
感谢您的阅读,欢迎参观我的个人网站:小嗨词典【 https://www.happydict.cn】