1.
package simple;
import java.util.Scanner;
/*
* 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),
* 幾個數相加有鍵盤控制。
* 心得:求a的b次方:Math.pow(a,b);
* 對於一個重複使用的參數,若置於循環裏,必須注意每次循環的頭部是否需要初始化。
* */
public class aaANDaaaANDaaaa {
public static void main(String args[]) {
int number,count,nextNumber=0,result=0;
Scanner scan=new Scanner(System.in);
System.out.println("請輸入數字和累加次數");
number=scan.nextInt();
count=scan.nextInt();
for(int i=1;i<count+1;i++) {
nextNumber=0;
for(int j=0;j<i;j++) {
nextNumber+=(int) (number*Math.pow(10, j));
}
result+=nextNumber;
}
System.out.println("結果爲"+result);
}
}
2.
package simple;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/*
* ArrayList默認排序是按照插入順序
* 可以通過重載Comparator<T>來實現Collections.sort(List);的自定義排序
* */
public class arrayListSort {
public static void main(String args[]) {
ArrayList<Integer> alist=new ArrayList<Integer>();
alist.add(123);
alist.add(0);
alist.add(998);
for(int i:alist) {
System.out.print(i+" ");
}
Collections.sort(alist);
System.out.println("\n"+"排序後");
for(int i:alist) {
System.out.print(i+" ");
}
}
}
class sortByInt implements Comparator<Integer>{
@Override
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
if(o1>o2) {
return 1;
}
else {
return -1;}
}
}
3.
package simple;
import java.util.Arrays;
/*
* 對一串數組排序
* */
public class arrSort {
public static void main(String args[]) {
int[] arr= {1,5,3,100,55,312,4,712,34};
for(int i:arr) {
System.out.print(i+" ");}
Arrays.sort(arr);
System.out.println("Arrays.sort(arr)排序後");
for(int i:arr) {
System.out.print(i+" ");}
}
}
4.
package simple;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
//import com.sun.java.util.jar.pack.ConstantPool.Entry;
/*
* 輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
* 心得:String.toCharArray()將字符串變爲字符數組,換行符不計入
* Character.isLetter(Char c)判斷是否爲中英字母
* Character.isWhitespace(Char c)判斷是否爲空白字符
* Character.isDigit(Char c)判斷是否爲數字
* 遍歷map的迭代器
* Iteractor<Entry<Key,Value>> it=map.entrySet().iterator();
* */
public class character_Fun {
public static void main(String args[]) {
//Character x='2';
String s=null;
Scanner scan=new Scanner(System.in);
System.out.println("請輸入字符串");
s=scan.nextLine();
Map<String,Integer> map=new <String,Integer>HashMap();
map.put("English",0);
map.put("whiteSpace", 0);
map.put("number",0);
char []stringToChar=s.toCharArray();
for(int i=0;i<stringToChar.length;i++) {
if(Character.isLetter(stringToChar[i])) {
map.put("English",map.get("English")+1);
}
if(Character.isDigit(stringToChar[i])) {
map.put("number", map.get("number")+1);
}
if(Character.isWhitespace(stringToChar[i])) {
map.put("whiteSpace", map.get("whiteSpace")+1);
}
}
Iterator<Entry<String,Integer>> it=map.entrySet().iterator();
Entry <String,Integer>[]entry=new Entry[3];
int i=0;
while(it.hasNext()) {
entry[i++]=it.next();
}
for(int j=0;j<entry.length;j++) {
switch(entry[j].getKey()) {
case "English":
System.out.println("中英文字符數量爲"+entry[j].getValue());
break;
case "whiteSpace":
System.out.println("空白字符數量爲"+entry[j].getValue());
break;
case "number":
System.out.println("數字數量爲"+entry[j].getValue());
break;
default:
System.out.println("entry錄入了其它鍵值對");
break;
}
}
}
}
5.
package simple;
import java.util.LinkedList;
import java.util.List;
/*
* 一個數如果恰好等於它的因子之和,這個數就稱爲 "完數 "。例如6=1+2+3.編程 找出1000以內的所有完數
* 心得:是LinkedList,注意ed。
* 一般來說,嵌套循環中i比j大(外層循環比內層循環大),記住這個有助於自己在寫一些判斷條件時不至於寫反了(這種錯誤很不容易找到)
* */
public class completeNumber {
public static void main(String args[]) {
int number,n=0;
List<Integer>list=new LinkedList<Integer>();
List<Integer>eleList=new LinkedList<Integer>();
for(int i=1;i<1001;i++) {
n=0;
for(int j=1;j<i;j++) {
if(i%(double)j==0&&j!=i) {
eleList.add(j);
}
}
for(int m=0;m<eleList.size();m++) {
n+=eleList.get(m);
}
eleList.clear();
if(n==i) {
System.out.println("找到完數"+i);
}
}
}
}
6.
package simple;
import java.util.Scanner;
/*
一個球從指定高度落下,每次反彈都到達下落高度的一半,請計算出第十次反彈高度和總路徑長度。
*/
public class fallingBall {
public static void main(String args[]) {
double allHeight=0,height;
Scanner scan=new Scanner(System.in);
height=scan.nextDouble();
for(int i=0;i<10;i++) {
height=reBound(height);
allHeight+=height;
}
System.out.println("全程"+allHeight);
System.out.println("第十次"+reBound(height));
}
public static double reBound(double height) {
return height/2;
}
}
7.
package simple;
/*
* 有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
* */
public class fenshu {
public static void main(String args[]) {
double result=0;
double n=2,m=1,k=n;
for(int i=0;i<20;i++) {
result+=n/m;
n=n+m;
m=k;
k=n;
System.out.print(n+"/"+m+"+");
}
System.out.println("結果爲"+result);
}
}
8.
package simple;
import java.util.Scanner;
/*
* 判斷101-200之間有多少個素數,並輸出所有素數。
* Math.ceil(Double)向上取整
* Math.floor(Double)向下取整
* Math.round(Double)四捨五入
* */
public class findSuShu {
public static void main(String []args) {
for(int i=101;i<=200;i++) {
for(double j=2;j<8;j++) {
if(Math.ceil(i%j)==0) {
System.out.println(i+"是素數");
break;
}
}
}
}
}
9.
package simple;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
/*
* 將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
* 體會:對於循環的結束時的操作一定要慎重考慮
* */
public class getZhiYinShu {
public static void main(String args[]) {
int number;
List<Integer>list=new LinkedList<Integer>();
Scanner scan=new Scanner(System.in);
System.out.println("請輸入任意正整數");
number=scan.nextInt();
boolean flag=true;
boolean fineNumber=false;
int smallNumber=0;
while(flag) {
fineNumber=false;
for(double i=2;i<=number;i++) {
if(number%i==0) {
for(int j=2;j<=i;j++) {
if(j%i==0&&j==i) {
fineNumber=true;
break;
}
else if(j%i==0) {
fineNumber=false;
break;
}
}
if(fineNumber==true) {
list.add((int) i);
number=(int) (number/i);
if(number<i) {
//list.add((int) i);
flag=false;
}
break;
}
}
}
//flag=false;
}
for(int i=0;i<list.size();i++) {
System.out.println("獲得質因數"+list.get(i));
}
}
}
10.
package simple;
import java.util.Arrays;
import java.util.Scanner;
/*
* 將一個數字插入到一個已經排好順序的數組中//我僅實現了從小到大排序,從大到小同理,開頭對排序方式已經進行了判斷
* 心得:數組擴容:將一個數組拷貝到另一個數組中。
* 方法:int b[]=Arrays.copyOf(a,a.lenghth+x);
* */
public class insertInToSorted {
public static void main(String args[]) {
int a[]= {1,2,3,4,4,52,55,66,467};
boolean isBigSort=true;
for(int i=0;i<a.length-1;i++) {
if(a[i]>a[i+1]) {
isBigSort=false;
}
else if(a[i]<a[i+1]) {
isBigSort=true;
}
}
int b[];
b=Arrays.copyOf(a,a.length+1);
int k,m,n;
Scanner scan=new Scanner(System.in);
k=scan.nextInt();
for(int i=0;i<b.length-1;i++) {
if(k<b[i]||i==b.length-2) {
m=b[i];
b[i]=k;
for(int j=i;j<b.length-1;j++) {
n=b[j+1];
b[j+1]=m;
m=n;
}
break;
}
}
for(int i:b) {
System.out.print(i+" ");
}
}
}
11.
package simple;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/*
* 請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續 判斷第二個字母。
* */
public class like {
public static void main(String args[]) {
char n;
Scanner scan=new Scanner(System.in);
//scan.next
n=scan.nextLine().charAt(0);
List<String>list=new ArrayList<String>();
list.add("Monday");
list.add("Thuesday");
list.add("Wedsday");
list.add("Tuesday");
list.add("Friday");
list.add("Saturday");
list.add("Sunday");
boolean flag=true;
String taget=null;
while(flag) {
for(String d:list) {
for(int i=0;i<d.length();i++) {
if(n!=d.charAt(i)) {
break;
}
else {
if(i!=d.length()-1) {
System.out.println("請輸入下一個字符:");
n=scan.nextLine().charAt(0);
}
else {
flag=false;
break;
}
}
}
if(flag==false) {
taget=d;
break;
}
}
if(flag==true) {
System.out.println("沒找到");
flag=false;
}
else {
System.out.println("找到了"+taget);
}
}
}
}
12.
package simple;
/*
* 心得:indexOf會返回第一個出現的位置,可以補一個int參數表示從哪裏開始搜索,默認第一個開始。
* lastIndexOf返回最後一個出現位置
* split可以將字符串按照參數字符串分開,但是注意分開後都不會帶參數的字符段
* */
public class locationOfString {
public static void main(String args[]) {
String s="sdzcmxznvbqeyrgasdbafasdav";
char[]x=s.toCharArray();
//Character.
String[]z=s.split("asd");
for(String y:z) {
System.out.println(y);
}
System.out.println(s.indexOf("asd")+" "+s.lastIndexOf("asd"));
}
}
13.
package simple;
/*
* 正向冒泡排序
* 反向冒泡同理
* 心得:冒泡就是每次找到一個最大/小值放在最後面,需要遍歷的隊列逐漸縮短
* */
public class maoPaoSort {
public static void main(String args[]) {
int []a= {134,436,1324,647,134,5645,12312};
int k;
for(int i=0;i<a.length;i++) {
for(int j=0;j<a.length-i-1;j++) {
if(a[j]>a[j+1]) {
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
}
for(int x:a) {
System.out.print(x+" ");
}
}
}
14.
package simple;
import java.util.LinkedList;
import java.util.List;
/*
* 有1、2、3、4四個數字,能組成多少個互不相同且一個數字中無重複數字的三位數?並把他們都輸入。
* */
public class oneTwoThreeFour {
public static void main(String args[]) {
List<String>list=new LinkedList<String>();
for(int i=1;i<5;i++) {
for(int j=1;j<5;j++) {
for(int k=1;k<5;k++) {
if(i!=j&&j!=k&&i!=k) {
list.add(i+""+j+""+k+"");
}
}
}
}
for(String n:list) {
System.out.println(n);
}
}
}
15.
package simple;
import java.util.Stack;
/*
* 古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,
* 假如兔子都不死,問12個月的後兔子總數爲多少?
* */
public class rabbitGetMore {
public static void main(String agrs[]) {
Stack grown=new Stack();
Stack unGrown1=new Stack();
Stack unGrown2=new Stack();
grown.push(1);
unGrown1.push(0);
unGrown2.push(0);
int month=12;
int r1=0,r2=0,r3=1;
for(int i=0;i<month;i++) {
r2=(int) unGrown1.pop();
r1=(int)grown.peek();
r3=(int)unGrown2.pop()+(int)grown.peek();
unGrown2.push(r2);
unGrown1.push(r1);
//unGrown1.pop();
grown.push(r3);
}
System.out.println("兔總數爲"+grown.peek()+" "+unGrown1.peek()+" "+unGrown2.peek());
}
}
16.
package simple;
/*
* 利用遞歸方法求5!。
* */
public class reFun {
public int refun(int k) {
if(k==1) {
return 1;
}
else {
return k*refun(k-1);
}
}
public static void main(String args[]) {
reFun re=new reFun();
int result=re.refun(5);
System.out.println(result);
}
}
17.
package simple;
import java.util.Scanner;
/*
* 利用條件運算符的嵌套來完成此題:學習成績> =90分的同學用A表示,
* 60-89分之間的用B表示,60分以下的用C表示。
* 心得:條件運算符:判斷? value1:value2
* 條件運算符實際只是返回一個值;因此跟函數一樣可以嵌套;value1和value2也可以再寫成一個條件運算符
* */
public class setMark {
public static void main(String args[]) {
int mark;
Scanner scan=new Scanner(System.in);
System.out.println("請輸入成績");
mark=scan.nextInt();
char markInChar=mark>=90?'A':mark>=60?'B':'C';
System.out.println("成績爲"+markInChar);
}
}
18.
package simple;
/*
* 打印出如下圖案(菱形)
*
***
*****
*******
*****
***
*
//心得:對於像遞增的循環(想要對同一步驟連續執行1,3,5,7次),可以令自增變量i每次增加1/n,n爲遞增的值
* */
public class triType {
public static void main(String args[]) {
for(int i=0;i<4;i++) {
for(int j=3;j>i;j--) {
System.out.print(" ");
}
for(int k=1;k/2.0<i+1;k++) {
System.out.print("*");
}
System.out.println("");
}
}
}
19.
package simple;
import java.util.Scanner;
/*
* 打印出所有的 "水仙花數 ",所謂 "水仙花數 "是指一個三位數,其各位數字立方和等於該數本身。
* 例如:153是一個 "水仙花數 ",因爲153=1的三次方+5的三次方+3的三次方。
* 心得:判斷到運行錯誤時要及時結束當前線程繼續運行,防止下面的代碼段繼續運行出現意料之外到結果
* */
public class waterFlowerNumber {
public static void main(String args[]) {
Scanner scan=new Scanner(System.in);
String numberInString;
System.out.println("請輸入任意三位數字");
numberInString=scan.nextLine();
if(numberInString.length()!=3) {
System.out.println("您輸入的不是三位數字");
return;
}
int zero='0';
int n3,n2,n1;
n3=numberInString.charAt(0)-zero;
n2=numberInString.charAt(1)-zero;
n1=numberInString.charAt(2)-zero;
if(Integer.valueOf(numberInString)==n3*n3*n3+n2*n2*n2+n1*n1*n1) {
System.out.println(numberInString+"是一個水仙花數");
}
else {
System.out.println(numberInString+"不是水仙花數");
}
}
}