陣列練習題
十進位表示法
一開始不知道數值究竟是幾位數的時候,跟我們小學在算這是幾位數時一樣,都是按照個十百千...念上去來算
所以要先算他可不可以被1整除,可以的話就是"個",可以被十整除,就是"十",以此類推...
Scanner s=new Scanner(System.in);
System.out.print("請輸入一個大於0的數值:");
int value=s.nextInt();
System.out.print(value+"=");
int[] Decimal=new int[10];
int counter=0;
int multi=1;
while(value>0){
Decimal[counter]=value%10;
value/=10;
multi*=10;
counter++;
}
for(int i=counter-1;i>=0;i--){ //記得couter此處要-1
multi/=10; //此行也要擺在print前面
System.out.print(Decimal[i]+"*"+multi);
if(i!=0){
System.out.print("+");
}
}
----------------------------
請輸入一個大於0的數值:1234
1234=1*1000+2*100+3*10+4*1
轉置矩陣
int[][] matrix={{1,2,3},{4,5,6},{7,8,9}};
System.out.println("原始矩陣:");
for(int[] i:matrix){
for(int j:i){
System.out.print(j+" ");
}
System.out.println("");
}
System.out.println("轉置矩陣:");
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
System.out.print(matrix[j][i]+" ");
}
System.out.println("");
}
--------------------------------------
原始矩陣:
1 2 3
4 5 6
7 8 9
轉置矩陣:
1 4 7
2 5 8
3 6 9
迴文判斷
符合迴文的字串從左右兩邊念過去結果一樣 ex.12321 , 1589851
此題有好幾種想法,你可以選擇
- 把字串倒過來顯示後,再將它跟原字串比較看相不相同
- 第一個字跟最後一個字比,第二個字跟倒數第二字比....
以下程式碼使用第二種,可以思考一下兩種方法的優劣性
//PURPOSE:迴文判斷
Scanner s=new Scanner(System.in);
System.out.print("請輸入您要判斷的字串:");
String str=s.next();
char[] line=str.toCharArray();
int left=0;
int right=line.length-1;
while(left<=right){
if(line[left]==line[right]){
right--;
left++;
}else{
System.out.println(str+"非迴文");
break;
}
}
if(left>right){ //迴圈並不是透過break來結束的,表示是迴文
System.out.println(str+"是迴文");
}
------------------------
請輸入您要判斷的字串:1589851
1589851是迴文
------------------------
請輸入您要判斷的字串:1245821
1245821非迴文