JAVA 51道練習題

JAVA 51道練習題

這裏一共有51道JAVA基礎練習題,代碼中有題目,太懶了我就不一個個打目錄了,是將別人的代碼一個個粘了過來,感謝作者

輸出9*9口訣



/**
 * 
 * 
 * 
 */
public class Test {

	public static void main(String[] args) {
		for (int i = 1; i < 10; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(j + "*" + i + "=" + j * i + "    ");
				if (j * i < 10) {
					System.out.print(" ");
				}
			}
			System.out.println();
		}
	}
}

打印出如下圖案(菱形)   
     *   
    ***   
   *****   
  *******   
   *****   
    ***   
     *   


public class Test {
	public static void main(String[] args) {
		  int H = 7, W = 7;// 高和寬必須是相等的奇數
		  for (int i = 0; i < (H + 1) / 2; i++) {
		   for (int j = 0; j < W / 2 - i; j++) {
		    System.out.print(" ");
		   }
		   for (int k = 1; k < (i + 1) * 2; k++) {
		    System.out.print('*');
		   }
		   System.out.println();
		  }
		  for (int i = 1; i <= H / 2; i++) {
		   for (int j = 1; j <= i; j++) {
		    System.out.print(" ");
		   }
		   for (int k = 1; k <= W - 2 * i; k++) {
		    System.out.print('*');
		   }
		   System.out.println();
		  }
	}
}

5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最後問第一個人,他說是10歲。請問第五個人多大?  







public class Test {
	public static void main(String[] args) {
		int age = 10;
		for (int i = 2; i <= 5; i++) {
			age = age + 2;
		}
		System.out.println(age);
	}
}

不使用中間變量,把兩個變量的值互換



public class Test {
	public static void main(String[] args) {
		int a = 10;
		int b = 100;
		a = a * b;
		b = a / b;
		a = a / b;
		System.out.print("a=" + a + " b=" + b);

	}
}

打印出所有的 "水仙花數 ",所謂 "水仙花數 "是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個 "水仙花數 ",因爲153=1的三次方+5的三次方+3的三次方。



public class Test {
	public static void main(String[] args) {
		int b1, b2, b3;
		for (int m = 101; m < 1000; m++) {
			b3 = m / 100;
			b2 = m % 100 / 10;
			b1 = m % 10;
			if ((b3 * b3 * b3 + b2 * b2 * b2 + b1 * b1 * b1) == m) {
				System.out.println(m + "是一個水仙花數");
			}
		}
	}
}


計算字符串中子串出現的次數。

首先在控制檯輸入一個字符串
然後在控制檯輸入子串
計算子串出現的次數





import java.util.*;
public class lianxi49 {
public static void main(String args[]) {
  Scanner s = new Scanner(System.in);
  System.out.print("請輸入字符串:");
  String str1 = s.nextLine();
  System.out.print("請輸入子串:");
  String str2 = s.nextLine();
  int count = 0;
  if (str1.equals("") || str2.equals("")) {
   System.out.println("你沒有輸入字符串或子串,無法比較!");
   System.exit(0);
  } else {
   for (int i = 0; i <= str1.length() - str2.length(); i++) {
    if (str2.equals(str1.substring(i, str2.length() + i)))
     // 這種比法有問題,會把"aaa"看成有2個"aa"子串。
     count++;
   }
   System.out.println("子串在字符串中出現: " + count + " 次");
  }
}
}

將This is a test倒着輸出tset a si sihT (用StringBuffer)




public class Test {
	public static void main(String[] args) {

		String str = "this is a man";
		StringBuffer sb = new StringBuffer(str.length());
		for (int j = str.length() - 1; j >= 0; j--) {
			sb.append(str.charAt(j));
		}
		System.out.print(sb);
	}
}

從控制檯輸入3個數,按大小順序輸出。



import java.util.Scanner;
public class Test{
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.println("請輸入3個整數:");
		int a = s.nextInt();
		int b = s.nextInt();
		int c = s.nextInt();
		if (a < b) {
			int t = a;
			a = b;
			b = t;
		}
		if (a < c) {
			int t = a;
			a = c;
			c = t;
		}
		if (b < c) {
			int t = b;
			b = c;
			c = t;
		}
		System.out.println("從大到小的順序輸出:");
		System.out.println(a + " " + b + " " + c);
	}
}

寫一個函數,例如:給你的 a b c 則輸出 abc  acb  bac  bca  cab  cba





import java.util.ArrayList;
import java.util.List;

public class Test {
	public static void main(String[] args) {
		String s = "ABCD";// 原字符串
		List<String> result = list(s, "");// 列出字符的組合,放入result
		System.out.println(result.size());
		;
		System.out.println(result);
	}

	/**
	 * 列出基礎字符串(base)的所有組合
	 * 
	 * @param base
	 *            以該字符串作爲基礎字符串,進行選擇性組合。
	 * @param buff
	 *            所求字符串的臨時結果
	 * @param result
	 *            存放所求結果
	 */
	public static List<String> list(String base, String buff) {
		List<String> result = new ArrayList<String>();// 存放結果信息。
		if (base.length() <= 0) {
			result.add(buff);
		}
		for (int i = 0; i < base.length(); i++) {
			List<String> temp = list(new StringBuilder(base).deleteCharAt(i)
					.toString(), buff + base.charAt(i));
			result.addAll(temp);

		}
		return result;
	}

	/**
	 * 列出基礎字符串(base)的所有組合
	 * 
	 * @param base
	 *            以該字符串作爲基礎字符串,進行選擇性組合。
	 * @param buff
	 *            所求字符串的臨時結果
	 * @param result
	 *            存放所求結果
	 */
	public static void list(String base, String buff, List<String> result) {
		if (base.length() <= 0) {
			result.add(buff);
		}
		for (int i = 0; i < base.length(); i++) {
			list(new StringBuilder(base).deleteCharAt(i).toString(), buff
					+ base.charAt(i), result);
		}
	}
}


判斷101-200之間有多少個素數,並輸出所有素數。




public class Test {
	public static void main(String[] args) {
		int count = 0;
		for (int i = 101; i < 200; i += 2) {
			boolean b = false;
			for (int j = 2; j <= Math.sqrt(i); j++) {
				if (i % j == 0) {
					b = false;
					break;
				} else {
					b = true;
				}
			}
			if (b == true) {
				count++;
				System.out.println(i);
			}
		}
		System.out.println("素數個數是: " + count);
	}
}

0-7所能組成的奇數個數。

提示:
//組成1位數是4個。
//組成2位數是7*4個。
//組成3位數是7*8*4個。
//組成4位數是7*8*8*4個。
......





public class Test {
	public static void main(String[] args) {
		int sum = 4;
		int j;
		System.out.println("組成1位數是 " + sum + " 個");
		sum = sum * 7;
		System.out.println("組成2位數是 " + sum + " 個");
		for (j = 3; j <= 9; j++) {
			sum = sum * 8;
			System.out.println("組成" + j + "位數是 " + sum + " 個");
		}
	}
}

一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在 第10次落地時,共經過多少米?第10次反彈多高? 




/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {

		double h = 100, s = 100;
		for (int i = 1; i < 10; i++) {
			s = s + h;
			h = h / 2;
		}
		System.out.println("經過路程:" + s);
		System.out.println("反彈高度:" + h / 2);

	}

}

一個數如果恰好等於它的因子之和,這個數就稱爲 "完數 "。例如6=123.編程找出1000以內的所有完數。





/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {

		System.out.println("1到1000的完數有: ");
		for (int i = 1; i < 1000; i++) {
			int t = 0;
			for (int j = 1; j <= i / 2; j++) {
				if (i % j == 0) {
					t = t + j;
				}
			}
			if (t == i) {
				System.out.print(i + "     ");
			}
		}

	}
}

判斷一個整數能被幾個9整除?




import java.util.*;

public class Test {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.print("請輸入一個整數:");
		int num = s.nextInt();
		int tmp = num;
		int count = 0;
		for (int i = 0; tmp % 9 == 0;) {
			tmp = tmp / 9;
			count++;
		}
		System.out.println(num + " 能夠被 " + count + " 個9整除。");
	}
}

一個正整數分解質因數。例如:輸入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的值,重複執行第一步。  





import java.util.*;

public class Test {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.print("請鍵入一個正整數:     ");
		int n = s.nextInt();
		int k = 2;
		System.out.print(n + "=");
		while (k <= n) {
			if (k == n) {
				System.out.println(n);
				break;
			} else if (n % k == 0) {
				System.out.print(k + "*");
				n = n / k;
			} else {
				k++;
			}
		}
	}
}

1+2!+3!+...+20!的和




public class Test {
	public static void main(String[] args) {
		long sum = 0;
		long fac = 1;
		for (int i = 1; i <= 20; i++) {
			fac = fac * i;
			sum += fac;
		}
		System.out.println(sum);
	}
}

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。   




import java.util.Scanner;

/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		long a, b = 0, sum = 0;
		Scanner s = new Scanner(System.in);
		System.out.print("輸入數字a的值: ");
		a = s.nextInt();
		System.out.print("輸入相加的項數:");
		int n = s.nextInt();
		int i = 0;
		while (i < n) {
			b = b + a;
			sum = sum + b;
			a = a * 10;
			++i;
		}
		System.out.println(sum);
	}
}

100之內的素數。





//使用除sqrt(n)的方法求出的素數不包括2和3
public class Test {
	public static void main(String[] args) {

		// 需要運行哪個方法,放開註釋即可,每段代碼純手打,親測可用
		// new Test().m1();
		// new Test().m2();
	}

	public void m1() {
		boolean b = false;
		System.out.print(2 + " ");
		System.out.print(3 + " ");
		for (int i = 3; i < 100; i += 2) {
			for (int j = 2; j <= Math.sqrt(i); j++) {
				if (i % j == 0) {
					b = false;
					break;
				} else {
					b = true;
				}
			}
			if (b == true) {
				System.out.print(i + " ");
			}
		}
	}

	// 該程序使用除1位素數得2位方法,運行效率高通用性差。
	public void m2() {
		int[] a = new int[] { 2, 3, 5, 7 };
		for (int j = 0; j < 4; j++)
			System.out.print(a[j] + " ");
		boolean b = false;
		for (int i = 11; i < 100; i += 2) {
			for (int j = 0; j < 4; j++) {
				if (i % a[j] == 0) {
					b = false;
					break;
				} else {
					b = true;
				}
			}
			if (b == true) {
				System.out.print(i + " ");
			}
		}
	}
}


輸入兩個正整數m和n,求其最大公約數和最小公倍數





/**在循環中,只要除數不等於0,用較大數除以較小的數,將小的一個數作爲下一輪循環的大數,取得的餘數作爲下一輪循環的較小的數,如此循環直到較小的數的值爲0,返回較大的數,此數即爲最大公約數,最小公倍數爲兩數之積除以最大公約數。
*/
import java.util.Scanner;

/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		int a, b, m;
		Scanner s = new Scanner(System.in);
		System.out.print("鍵入一個整數: ");
		a = s.nextInt();
		System.out.print("再鍵入一個整數: ");
		b = s.nextInt();
		Deff cd = new Deff();
		m = cd.deff(a, b);
		int n = a * b / m;
		System.out.println("最大公約數: " + m);
		System.out.println("最小公倍數: " + n);
	}
}

class Deff {
	public int deff(int x, int y) {
		int t;
		if (x < y) {
			t = x;
			x = y;
			y = t;
		}
		while (y != 0) {
			if (x == y)
				return x;
			else {
				int k = x % y;
				x = y;
				y = k;
			}
		}
		return x;
	}
}

輸入某年某月某日,判斷這一天是這一年的第幾天?




import java.util.Scanner;

/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		int year, month, day;
		int days = 0;
		int d = 0;
		int e;
		Input fymd = new Input();
		do {
			e = 0;
			System.out.print("輸入年:");
			year = fymd.input();
			System.out.print("輸入月:");
			month = fymd.input();
			System.out.print("輸入天:");
			day = fymd.input();
			if (year < 0 || month < 0 || month > 12 || day < 0 || day > 31) {
				System.out.println("輸入錯誤,請重新輸入!");
				e = 1;
			}
		} while (e == 1);
		for (int i = 1; i < month; i++) {
			switch (i) {
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				days = 31;
				break;
			case 4:
			case 6:
			case 9:
			case 11:
				days = 30;
				break;
			case 2:
				if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
					days = 29;
				} else {
					days = 28;
				}
				break;
			}
			d += days;
		}
		System.out.println(year + "-" + month + "-" + day + "是這年的第" + (d + day)
				+ "天。");
	}
}

class Input {
	public int input() {
		int value = 0;
		Scanner s = new Scanner(System.in);
		value = s.nextInt();
		return value;
	}
}


1個人10歲,第2個比第1個人大2歲,依次遞推,請用遞歸方式計算出第8個人多大?




/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		System.out.println(computeAge(8));
	}

	public static int computeAge(int n) {
		if (n == 1)
			return 10;
		return computeAge(n - 1) + 2;
	}
}

用遞歸求N!=N*(N-1)*(N-2)*...*2*1;





/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		System.out.println(digui(8));
	}

	public static long digui(int i){
	    if(i==0||i==1){
	       return 1;
	    }
	    else{
	       return i*digui(i-1);
	    }
	}
}

一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?  




/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		for (int x = 1; x < 100000; x++) {
			if (Math.sqrt(x + 100) % 1 == 0) {
				if (Math.sqrt(x + 268) % 1 == 0) {
					System.out.println(x + "加100是一個完全平方數,再加168又是一個完全平方數");
				}
			}
		}
	}
}

寫一個函數,求一個字符串的長度,在main函數中輸入字符串,並輸出其長度




用的length()方法,如果不用這個方法,你還能實現嗎?


import java.util.Scanner;

/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.println("請輸入一個字符串:");
		String str = s.nextLine();
		System.out.println("字符串的長度是:" + str.length());
	}
}

某個公司採用公用電話傳遞數據,數據是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5,然後用和除以10的餘數代替該數字,再將第一位和第四位交換,第二位和第三位交換。



import java.util.*;

public class Test {
	public static void main(String args[]) {
		Scanner s = new Scanner(System.in);
		int num = 0, temp;
		do {
			System.out.print("請輸入一個4位正整數:");
			num = s.nextInt();
		} while (num < 1000 || num > 9999);
		int a[] = new int[4];
		a[0] = num / 1000; // 取千位的數字
		a[1] = (num / 100) % 10; // 取百位的數字
		a[2] = (num / 10) % 10; // 取十位的數字
		a[3] = num % 10; // 取個位的數字
		for (int j = 0; j < 4; j++) {
			a[j] += 5;
			a[j] %= 10;
		}
		for (int j = 0; j <= 1; j++) {
			temp = a[j];
			a[j] = a[3 - j];
			a[3 - j] = temp;
		}
		System.out.print("加密後的數字爲:");
		for (int j = 0; j < 4; j++)
			System.out.print(a[j]);
	}
}

將一個數組逆序輸出。




import java.util.*;

public class Test {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int a[] = new int[20];
		System.out.println("請輸入多個正整數(輸入-1表示結束):");
		int i = 0, j;
		do {
			a[i] = s.nextInt();
			i++;
		} while (a[i - 1] != -1);
		System.out.println("你輸入的數組爲:");
		for (j = 0; j < i - 1; j++) {
			System.out.print(a[j] + "   ");
		}
		System.out.println("\n數組逆序輸出爲:");
		for (j = i - 2; j >= 0; j = j - 1) {
			System.out.print(a[j] + "   ");
		}
	}
}

控制檯獲得兩個字符串,連接後打印出來



import java.util.*;

public class Test {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.print("請輸入一個字符串:");
		String str1 = s.nextLine();
		System.out.print("請再輸入一個字符串:");
		String str2 = s.nextLine();
		String str = str1 + str2;
		System.out.println("連接後的字符串是:" + str);
	}
}

利用遞歸方法求5! 

public class Test {
	public static void main(String[] args) {
		int n = 5;
		rec fr = new rec();
		System.out.println(n + "! = " + fr.rec(n));
	}
}

class rec {
	public long rec(int n) {
		long value = 0;
		if (n == 1) {
			value = 1;
		} else {
			value = n * rec(n - 1);
		}
		return value;
	}
}

對字母進行排序,如:s,a,g,d,b,排序後是a,b,d,g,s



import java.util.ArrayList;
import java.util.List;

public class Test {
	public static void main(String[] args) {
		String s = "sagdb";
		List t = new ArrayList();
		for(int i=0;i<s.length();i++){
		    String xx = s.substring(i,i+1);
		    t.add(xx);
		}
		java.util.Collections.sort(t);
		System.out.println(t);
	}
}

給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。



//使用了長整型最多輸入18位
import java.util.*;

public class Test {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.print("請輸入一個正整數:");
		long a = s.nextLong();
		String ss = Long.toString(a);
		char[] ch = ss.toCharArray();
		int j = ch.length;
		System.out.println(a + "是一個" + j + "位數。");
		System.out.print("按逆序輸出是:");
		for (int i = j - 1; i >= 0; i--) {
			System.out.print(ch);
		}
	}
}

輸入三個整數x,y,z,請把這三個數由小到大輸出




import java.util.Scanner;

/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		Input fnc = new Input();
		int x = 0, y = 0, z = 0;
		System.out.print("輸入第一個數字:");
		x = fnc.input();
		System.out.print("輸入第二個數字:");
		y = fnc.input();
		System.out.print("輸入第三個數字:");
		z = fnc.input();
		if (x > y) {
			int t = x;
			x = y;
			y = t;
		}
		if (x > z) {
			int t = x;
			x = z;
			z = t;
		}
		if (y > z) {
			int t = y;
			y = z;
			z = t;
		}
		System.out.println("三個數字由小到大排列爲: " + x + " " + y + " " + z);
	}
}

class Input {
	public int input() {
		int value = 0;
		Scanner s = new Scanner(System.in);
		value = s.nextInt();
		return value;
	}
}


寫一個函數,給你一個字符串,倒序輸出來





/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		 
	}
	
	public String getString(String str){
	    if(str!=null){
	       String newStr = "";
	       for(int i=0;i<str.length();i++){
	         char c = str.charAt(str.length()-1-i);
	         newStr = newStr + c;
	       }
	      return newStr;
	    }else{
	       return null;
	    }
	}
}

在控制檯輸入一個7位以上的正整數,獲取之後取4~7位。





import java.util.Scanner;

/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {

		Scanner s = new Scanner(System.in);
		System.out.print("請輸入一個7位以上的正整數:");
		long a = s.nextLong();
		String ss = Long.toString(a);
		char[] ch = ss.toCharArray();
		int j = ch.length;
		if (j < 7) {
			System.out.println("輸入錯誤!");
		} else {
			System.out.println("截取從右端開始的4~7位是:" + ch[j - 7] + ch[j - 6]
					+ ch[j - 5] + ch[j - 4]);
		}
	}

}

猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少?





public class Test {
	public static void main(String[] args) {
		int x = 1;
		for (int i = 2; i <= 10; i++) {
			x = (x + 1) * 2;
		}
		System.out.println("猴子第一天摘了 " + x + " 個桃子");
	}
}

一個5位數,判斷它是不是迴文數。即12321是迴文數,個位與萬位相同,十位與千位相同。




import java.util.*;

public class Test {
	public static void main(String[] args) {
		new Test().m2();
	}

	public void m1(){
		Scanner s = new Scanner(System.in);
		int a;
		do {
			System.out.print("請輸入一個5位正整數:");
			a = s.nextInt();
		} while (a < 10000 || a > 99999);
		String ss = String.valueOf(a);
		char[] ch = ss.toCharArray();
		if (ch[0] == ch[4] && ch[1] == ch[3]) {
			System.out.println("這是一個迴文數");
		} else {
			System.out.println("這不是一個迴文數");
		}
	}
	// 這個更好,不限位數

	public void m2() {

		Scanner s = new Scanner(System.in);
		boolean is = true;
		System.out.print("請輸入一個正整數:");
		long a = s.nextLong();
		String ss = Long.toString(a);
		char[] ch = ss.toCharArray();
		int j = ch.length;
		for (int i = 0; i < j / 2; i++) {
			if (ch[i] != ch[j - i - 1]) {
				is = false;
			}
		}
		if (is == true) {
			System.out.println("這是一個迴文數");
		} else {
			System.out.println("這不是一個迴文數");
		}
	}
}

有一分數序列:2/13/25/38/513/821/13...求出這個數列的前20項之和。





/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		int x = 2, y = 1, t;
		double sum = 0;
		for (int i = 1; i <= 20; i++) {
			sum = sum + (double) x / y;
			t = y;
			y = x;
			x = y + t;
		}
		System.out.println("前20項相加之和是: " + sum);
	}
}

統計字符串的個數 "I'm go to swimming"
例如:I:1 // ':1 // m:3 // 空格:3 // g:2// ...





import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		String str = "I'm go to swimming";
		Set<String> set = new HashSet<String>();
		for (int i = 0; i < str.length(); i++) {
			String s = str.substring(i, i + 1);
			set.add(s);
		}
		Iterator it = set.iterator();
		while (it.hasNext()) {
			String sr = (String) it.next();
			int k = 0;
			for (int j = 0; j < str.length(); j++) {
				if (sr.equals(str.substring(j, j + 1))) {
					k++;
				}
			}
			System.out.println(sr + "有" + k + "個");
		}
	}
}

1234四個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?






/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		int count = 0;
		for (int x = 1; x < 5; x++) {
			for (int y = 1; y < 5; y++) {
				for (int z = 1; z < 5; z++) {
					if (x != y && y != z && x != z) {
						count++;
						System.out.println(x * 100 + y * 10 + z);
					}
				}
			}
		}
		System.out.println("共有" + count + "個三位數");
	}
}

企業發放的獎金根據利潤提成。利潤低於或等於10萬元時,獎金可提10%;利潤高於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可提成7.5%20萬到40萬之間時,高於20萬元的部分,可提成5%40萬到60萬之間時高於40萬元的部分,可提成3%60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤,求應發放獎金總數?  



import java.util.*;

public class Test {
	public static void main(String[] args) {
		double x = 0, y = 0;
		System.out.print("輸入當月利潤(萬):");
		Scanner s = new Scanner(System.in);
		x = s.nextInt();
		if (x > 0 && x <= 10) {
			y = x * 0.1;
		} else if (x > 10 && x <= 20) {
			y = 10 * 0.1 + (x - 10) * 0.075;
		} else if (x > 20 && x <= 40) {
			y = 10 * 0.1 + 10 * 0.075 + (x - 20) * 0.05;
		} else if (x > 40 && x <= 60) {
			y = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (x - 40) * 0.03;
		} else if (x > 60 && x <= 100) {
			y = 20 * 0.175 + 20 * 0.05 + 20 * 0.03 + (x - 60) * 0.015;
		} else if (x > 100) {
			y = 20 * 0.175 + 40 * 0.08 + 40 * 0.015 + (x - 100) * 0.01;
		}
		System.out.println("應該提取的獎金是 " + y + "萬");
	}
}

有n個人圍成一圈,順序排號。從第一個人開始報數(從13報數),凡報到3的人退出圈子,問最後留下的是原來第幾號的那位?




import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.print("請輸入排成一圈的人數:");
		int n = s.nextInt();
		boolean[] arr = new boolean[n];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = true;
		}
		int leftCount = n;
		int countNum = 0;
		int index = 0;
		while (leftCount > 1) {
			if (arr[index] == true) {
				countNum++;
				if (countNum == 3) {
					countNum = 0;
					arr[index] = false;
					leftCount--;
				}
			}
			index++;
			if (index == n) {
				index = 0;
			}
		}
		for (int i = 0; i < n; i++) {
			if (arr[i] == true) {
				System.out.println("原排在第" + (i + 1) + "位的人留下了。");
			}
		}
	}
}

編寫一個函數,輸入n爲偶數時,調用函數求12+14+...+1n,當輸入n爲奇數時,調用函數11+13+...+1n




import java.util.*;

public class Test {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.print("請輸入一個正整數 n= ");
		int n = s.nextInt();
		System.out.println("相應數列的和爲:" + sum(n));
	}

	public static double sum(int n) {
		double res = 0;
		if (n % 2 == 0) {
			for (int i = 2; i <= n; i += 2) {
				res += (double) 1 / i;
			}
		} else {
			for (int i = 1; i <= n; i += 2) {
				res += (double) 1 / i;
			}
		}
		return res;
	}
}

海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子平均分爲五份,多了一個,這隻猴子把多的一個扔入海中,拿走了一份。第二隻猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五隻猴子都是這樣做的,問海灘上原來最少有多少個桃子?




public class Test {
	public static void main(String[] args) {
		int i, m, j = 0, k, count;
		for (i = 4; i < 10000; i += 4) {
			count = 0;
			m = i;
			for (k = 0; k < 5; k++) {
				j = i / 4 * 5 + 1;
				i = j;
				if (j % 4 == 0)
					count++;
				else
					break;
			}
			i = m;
			if (count == 4) {
				System.out.println("原有桃子 " + j + " 個");
				break;
			}
		}
	}
}

利用條件運算符的嵌套來完成此題:學習成績> =90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示




import java.util.*;

public class Test {
	public static void main(String[] args) {
		int x;
		char grade;
		Scanner s = new Scanner(System.in);
		System.out.print("請輸入一個成績: ");
		x = s.nextInt();
		grade = x >= 90 ? 'A' : x >= 60 ? 'B' : 'C';
		System.out.println("等級爲:" + grade);
	}
}

請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。



import java.util.*;

public class Test {
	public static void main(String[] args) {
		getChar tw = new getChar();
		System.out.println("請輸入星期的第一個大寫字母:");
		char ch = tw.getChar();
		switch (ch) {
		case 'M':
			System.out.println("Monday");
			break;
		case 'W':
			System.out.println("Wednesday");
			break;
		case 'F':
			System.out.println("Friday");
			break;
		case 'T': {
			System.out.println("請輸入星期的第二個字母:");
			char ch2 = tw.getChar();
			if (ch2 == 'U') {
				System.out.println("Tuesday");
			} else if (ch2 == 'H') {
				System.out.println("Thursday");
			} else {
				System.out.println("無此寫法!");
			}
		}
			;
			break;
		case 'S': {
			System.out.println("請輸入星期的第二個字母:");
			char ch2 = tw.getChar();
			if (ch2 == 'U') {
				System.out.println("Sunday");
			} else if (ch2 == 'A') {
				System.out.println("Saturday");
			} else {
				System.out.println("無此寫法!");
			}
		}
			;
			break;
		default:
			System.out.println("無此寫法!");
		}
	}
}

class getChar {
	public char getChar() {
		Scanner s = new Scanner(System.in);
		String str = s.nextLine();
		char ch = str.charAt(0);
		if (ch < 'A' || ch > 'Z') {
			System.out.println("輸入錯誤,請重新輸入");
			ch = getChar();
		}
		return ch;
	}
}

有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數爲多少?   



/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		System.out.println("第1個月的兔子對數:    1");
		System.out.println("第2個月的兔子對數:    1");
		int f1 = 1, f2 = 1, f, M = 24;
		for (int i = 3; i <= M; i++) {
			f = f2;
			f2 = f1 + f2;
			f1 = f;
			System.out.println("第" + i + "個月的兔子對數: " + f2);
		}
	}
}

求一個3*3矩陣對角線元素之和




import java.util.Scanner;

/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int[][] a = new int[3][3];
		System.out.println("請輸入9個整數:");
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < 3; j++) {
				a[i][j] = s.nextInt();
			}
		}
		System.out.println("輸入的3 * 3 矩陣是:");
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < 3; j++) {
				System.out.print(a[i][j] + " ");
			}
			System.out.println();
		}
		int sum = 0;
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < 3; j++) {
				if (i == j) {
					sum += a[i][j];
				}
			}
		}
		System.out.println("對角線之和是:" + sum);
	}
}

控制檯輸入數組,最大的與第一個元素交換,最小的與最後一個元素交換,然後輸出數組。





import java.util.Scanner;

/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		int N = 8;
		int[] a = new int[N];
		Scanner s = new Scanner(System.in);
		int idx1 = 0, idx2 = 0;
		System.out.println("請輸入8個整數:");
		for (int i = 0; i < N; i++) {
			a[i] = s.nextInt();
		}
		System.out.println("你輸入的數組爲:");
		for (int i = 0; i < N; i++) {
			System.out.print(a[i] + " ");
		}
		int max = a[0], min = a[0];
		for (int i = 0; i < N; i++) {
			if (a[i] > max) {
				max = a[i];
				idx1 = i;
			}
			if (a[i] < min) {
				min = a[i];
				idx2 = i;
			}
		}
		if (idx1 != 0) {
			int temp = a[0];
			a[0] = a[idx1];
			a[idx1] = temp;
		}
		if (idx2 != N - 1) {
			int temp = a[N - 1];
			a[N - 1] = a[idx2];
			a[idx2] = temp;
		}
		System.out.println("\n交換後的數組爲:");
		for (int i = 0; i < N; i++) {
			System.out.print(a[i] + " ");
		}
	}
}

輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。



import java.util.Scanner;

/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		int digital = 0;
		int character = 0;
		int other = 0;
		int blank = 0;
		char[] ch = null;
		Scanner sc = new Scanner(System.in);
		String s = sc.nextLine();
		ch = s.toCharArray();
		for (int i = 0; i < ch.length; i++) {
			if (ch[i] >= '0' && ch[i] <= '9') {
				digital++;
			} else if ((ch[i] >= 'a' && ch[i] <= 'z') || ch[i] > 'A'
					&& ch[i] <= 'Z') {
				character++;
			} else if (ch[i] == ' ') {
				blank++;
			} else {
				other++;
			}
		}
		System.out.println("數字個數: " + digital);
		System.out.println("英文字母個數: " + character);
		System.out.println("空格個數: " + blank);
		System.out.println("其他字符個數:" + other);
	}
}

有n個整數,使其前面各數順序向後移m個位置,最後m個數變成最前面的m個數。




import java.util.Scanner;

/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		int N = 10;
		int[] a = new int[N];
		Scanner s = new Scanner(System.in);
		System.out.println("請輸入10個整數:");
		for (int i = 0; i < N; i++) {
			a[i] = s.nextInt();
		}
		System.out.print("你輸入的數組爲:");
		for (int i = 0; i < N; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.print("\n請輸入向後移動的位數:");
		int m = s.nextInt();
		int[] b = new int[m];
		for (int i = 0; i < m; i++) {
			b[i] = a[N - m + i];
		}
		for (int i = N - 1; i >= m; i--) {
			a[i] = a[i - m];
		}
		for (int i = 0; i < m; i++) {
			a[i] = b[i];
		}
		System.out.print("位移後的數組是:");
		for (int i = 0; i < N; i++) {
			System.out.print(a[i] + " ");
		}
	}

}

有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。




import java.util.Scanner;

/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {
		int[] a = new int[] { 1, 2, 6, 14, 25, 36, 37, 55 };
		int[] b = new int[a.length + 1];
		int t1 = 0, t = 0;
		int i = 0;
		Scanner s = new Scanner(System.in);
		System.out.print("請輸入一個整數:");
		int num = s.nextInt();
		if (num >= a[a.length - 1]) {
			b[b.length - 1] = num;
			for (i = 0; i < a.length; i++) {
				b = a;
			}
		} else {
			for (i = 0; i < a.length; i++) {
				if (num >= a[i]) {
					b[i] = a[i];
				} else {
					b[i] = num;
					break;
				}
			}
			for (int j = i + 1; j < b.length; j++) {
				b[j] = a[j - 1];
			}
		}
		for (i = 0; i < b.length; i++) {
			System.out.print(b[i] + " ");
		}
	}

}

自己隨意定義N個字符串,然後編程給這些字符串排序




/**
 * 代碼純手打,親測可用
 * 
 * @author Java資源庫-李偉 www.java1995.com
 */
public class Test {

	public static void main(String[] args) {

		int N = 5;
		String temp = null;
		String[] s = new String[N];
		s[0] = "matter";
		s[1] = "state";
		s[2] = "solid";
		s[3] = "liquid";
		s[4] = "gas";
		for (int i = 0; i < N; i++) {
			for (int j = i + 1; j < N; j++) {
				if (compare(s[i], s[j]) == false) {
					temp = s[i];
					s[i] = s[j];
					s[j] = temp;
				}
			}
		}
		for (int i = 0; i < N; i++) {
			System.out.println(s[i]);
		}

	}

	static boolean compare(String s1, String s2) {
		boolean result = true;
		for (int i = 0; i < s1.length() && i < s2.length(); i++) {
			if (s1.charAt(i) > s2.charAt(i)) {
				result = false;
				break;
			} else if (s1.charAt(i) < s2.charAt(i)) {
				result = true;
				break;
			} else {
				if (s1.length() < s2.length()) {
					result = true;
				} else {
					result = false;
				}
			}
		}
		return result;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章