JAVA编程题(1-8)

package com.ahua.arithmetic;

/**题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
 * @author Administrator
 *
 */
public class ConditionOperator {

	public static void main(String[] args) {
		for (int i = 50; i < 100; i++) {
			getLevel(i);
		}

	}
	
	public static void getLevel(int score){
		System.out.println(score +":"+((score>=90)?"A":((score>=60)?"B":"C")));
	}
}
package com.ahua.arithmetic;

import java.util.ArrayList;

/**题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
 * @author Administrator
 *
 */
public class FenJie {

	public static void main(String[] args) {
		for (int i = 2; i < 150; i++) {
			ArrayList<Integer> result = fenjie(i);
			System.out.println(i+":"+result.toString());
		}
	}
	
	/** 对某个数进行质因数分解
	 * @param number
	 * @return
	 */
	public static ArrayList<Integer> fenjie(int number){
		ArrayList<Integer> result  = new ArrayList<Integer>();
		
		for(int j = 2; j < 150; j++){
			if(number%j==0 && isPrimeNumber(j) && number>=j){
				result.add(j);
				ArrayList<Integer> result2  =fenjie(number/j);
				for (int i = 0; i < result2.size(); i++) {
					result.add(result2.get(i));
				}
				break;
			}
		}
		
		return result;
	}
	/** 判断一个数是否是素数(质数)
	 * @param num
	 * @return
	 */
	public static boolean isPrimeNumber(int num){
		int half = num/2;
		for (int i = 2; i < half; i++) {
			if(num%i==0){
				return false;
			}
		}
		return true;
	}
}
package com.ahua.arithmetic;

/**题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如: 
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
 * @author Administrator
 *
 */
public class FindDaffodilNumber {

	public static void main(String[] args) {
		for (int i = 100; i < 999; i++) {
			if(isDaffodilNumber(i)){
				System.out.println(i);
			}
		}

	}
	public static boolean isDaffodilNumber(int number){
		int tenNum =number/10%10;
		int hundredNum = number/100;
		int singleNum = number%10;
		int result = (int) (java.lang.Math.pow(tenNum, 3)+
				java.lang.Math.pow(hundredNum, 3)+
				java.lang.Math.pow(singleNum, 3)); 
		if(result==number){
			return true;
		}
		return false;
	}

}
package com.ahua.arithmetic;

/**题目:判断101-200之间有多少个素数,并输出所有素数。 
 *1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 
 *则表明此数不是素数,反之是素数。
 * @author Administrator
 *
 */
public class FindPrimeNumber {

	public static void main(String[] args) {
		for (int i = 101; i < 200; i++) {
			if(isPrimeNumber(i)){
				System.out.println(i);
			}
		}

	}

	public static boolean isPrimeNumber(int num){
		int half = num/2;
		for (int i = 2; i < half; i++) {
			if(num%i==0){
				return false;
			}
		}
		return true;
	}
}
package com.ahua.arithmetic;

import java.util.Scanner;

/**题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 
1.程序分析:利用辗除法。
 * @author Administrator
 *
 */
public class GcdTes {

	public static void main(String[] args) {
		
		Scanner sc=new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		int gongyueshu = getGongyueshu(num1,num2);
		int gongbeishu = getGongbeishu(num1,num2);
		System.out.println(gongyueshu+":"+gongbeishu);
	}

	/** 两个数的最小公倍数= 两数乘积/最大公约数
	 * @param num1
	 * @param num2
	 * @return
	 */
	private static int getGongbeishu(int num1, int num2) {
		return num1*num2/getGongyueshu(num1,num2);
	}

	/** 两数的最大公约数:大数/小数,将余数代替大数,迭代求,直到余数为0时,倍除数就是最大公约数
	 * @param num1
	 * @param num2
	 * @return
	 */
	private static int getGongyueshu(int num1, int num2) {
		int a=0,b=0;
		if(num1>=num2){
			a = num1; b = num2;
		}else{
			b = num1; a = num2;
		}
		if(a%b==0){
			return b;
		}else{
			int c = a%b;
			return getGongyueshu(c,b);
		}
	}

}
package com.ahua.arithmetic;

import java.util.Scanner;

/**题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 
1.程序分析:利用while语句,条件为输入的字符不为'\n'.
 * @author Administrator
 *
 */
public class StChar {

	public static void main(String[] args) {
		 
		int abcCount=0;//英文字母个数
		int spaceCount=0;//空格键个数
		int numCount=0;//数字个数
		int otherCount=0;//其他字符个数
		
		Scanner scan=new Scanner(System.in);
		String str=scan.nextLine();
		char[] ch = str.toCharArray();
		for(int i=0;i<ch.length;i++){
			if(Character.isLetter(ch[i])){
				//判断是否字母
				abcCount++;
			}else if(Character.isDigit(ch[i])){
				//判断是否数字
				numCount++;
			}else if(Character.isSpaceChar(ch[i])){
				//判断是否空格键
				spaceCount++;
			}else{
				//以上都不是则认为是其他字符
				otherCount++;
			}
		}
		System.out.println("字母个数:"+abcCount);
		System.out.println("数字个数:"+numCount);
		System.out.println("空格个数:"+spaceCount);
		System.out.println("其他字符个数:"+otherCount);

	}

}
package com.ahua.arithmetic;

import java.util.ArrayList;
import java.util.Scanner;
import java.util.concurrent.ArrayBlockingQueue;

/**题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 
1.程序分析:关键是计算出每一项的值。
 * @author Administrator
 *
 */
public class TestAdd {

	public static void main(String[] args) {
		
		Scanner sc=new Scanner(System.in);
		int num1 = sc.nextInt();
		while (num1<=0||num1>9) {
			System.out.println("请输入一个个位数");
			num1 = sc.nextInt();
		}
		int num2 = sc.nextInt();
		while (num2<=0||num2>9) {
			System.out.println("请输入一个个位数");
			num2 = sc.nextInt();
		}
		ArrayList<Long> tempArray = new ArrayList<Long>();
		for (int i = 0; i < num2; i++) {
			Long temp = getNum(num1,i);
			tempArray.add(temp);
		}
		System.out.println(tempArray);
		long sum = 0L;
		for (int i = 0; i < tempArray.size(); i++) {
			sum += tempArray.get(i);
		}
		System.out.println(sum);
		
	}

	private static long getNum(int num1, int count) {
		long result = num1;
		for (int j = 0; j < count; j++) {
			result = result*10 + num1;
		}
		return result;
	}

}
package com.ahua.arithmetic;

public class TestRabbit {

	/**题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 
	 *	1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
	 * @param args
	 */
	public static void main(String[] args) {
		int a = 1;
		int b = 1;
		for (int i = 0; i < 12; i++) {
			if(i==0 || i==1){
				System.out.println(i+":"+a);
			}else{
				int temp = a+b;
				a = b;
				b = temp;
				System.out.println(i+":"+temp);
			}
			
			
		}

	}

}


转载于:https://my.oschina.net/dylan2hdf/blog/303418

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值