陣列練習題


十進位表示法

一開始不知道數值究竟是幾位數的時候,跟我們小學在算這是幾位數時一樣,都是按照個十百千...念上去來算

所以要先算他可不可以被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非迴文

results matching ""

    No results matching ""