1. 程式人生 > 其它 >藍橋杯練習8+二維陣列的複習

藍橋杯練習8+二維陣列的複習

技術標籤:藍橋杯競賽練習java

藍橋杯練習8

問題描述如下:小明對數位中含有2,0,1,9的數字很感興趣(不包括前導0),在1到40中這樣的數包括1,2,9,10,至32,39,和40,共28個,他們的和是574。請問,在1到n中,所有這樣的數的和是多少
思路:這道題與上題的數的分解類似。
思路:
將int數值型別轉換成String型別。用String類的indexOf()方法,判斷該數字是否包含“2”,“0”,“1”,“9”這四個字元。
程式碼展示如下:

package 第十屆藍橋杯大賽決賽題;

import java.util.Scanner;

/*
 * 問題描述:
 * 小明對數位中含有2,0,1,9的數字很感興趣(不包括前導0),在1到40中這樣的數包括1,2,9,10,至32,39,和40
 * ,共28個,他們的和是574。
 * 請問,在1到n中,所有這樣的數的和是多少
 * */
public class 特別數的和 { public static void main(String[] args) { //這道題的思路與題數的分解思路相同。 Scanner sc = new Scanner(System.in); try { int n=sc.nextInt(); int sum=0; for(int i=1;i<=n;i++) { String sc1 = Integer.toString(i); if(sc1.indexOf("2")!=-1||sc1.indexOf("0")!=-1||sc1.
indexOf("1")!=-1||sc1.indexOf("9")!=-1) { sum+=i; } } System.out.println(sum); }catch(Exception e) { sc.close(); } } }

最近做了一些題,發現JAVA二維陣列部分知識都忘了,一下都是我的複習筆記

二維陣列為一個特殊的一維陣列,其每個元素又是一個一維陣列。
宣告二維陣列的語法如下:
type arr[][];
type [][] arr;
type 表示二維陣列的型別,arr 表示陣列名稱,第一個中括號表示行,第二個中括號表示列。

初始化二維陣列

三種語法方式如下:

arr = new type[][]{1,2,3,4,5,……};
arr = new type[][] {new 構造方法(引數列),……};
type[][] arr={{第1行第1列的值,第1行第2列的值,…},{第2行第1列的值,第2行第2列的值,…},…};

使用第二種方式宣告 int 型別的二維陣列,然後初始化該二維陣列。程式碼如下:

int[][] temp;
temp=new int [][]
{
    {new int(1),new int(2)},{new int(3),new int(4)}
};

使用第三種方式宣告 int 型別的二維陣列,並且初始化陣列。程式碼如下:

int[][] temp={{1,2},{3,4}};

獲取單個元素:

需要獲取二維陣列中元素的值時,也可以使用下標來表示。語法如下:

array[i-1][j-1];

獲取全部元素

在二維陣列中,直接使用 length 屬性獲取的是陣列的行數,在指定的索引後加上 length(如 array[0].length)表示的是該行擁有多少個元素,即列數。

例題:

假設有一個矩陣為 5 行 5 列,該矩陣是由程式隨機產生的 10 以內數字排列而成。下面使用二維陣列來建立該矩陣,程式碼如下:

package 基礎複習;

public class 二維陣列 {
public static void main(String[] args) {
	//建立一個二維矩陣
	int[][] matrix = new int[5][5];
	//隨機分配值
	for(int i=0;i<matrix.length;i++) {
		for(int j=0;j<matrix[i].length;j++) {
			matrix[i][j]=(int)(Math.random()*10);
		}
	}
	System.out.println("下面是程式生成的矩陣\n");
	//遍歷二維矩陣並輸出
	for(int k=0;k<matrix.length;k++) {
		for(int g=0;g<matrix[k].length;g++) {
			System.out.print(matrix[k][g]+"");
		}
		System.out.println();
	}
}
}

獲取整行元素

獲取指定行的元素時,需要將行數固定,然後只遍歷該行中的全部列即可。

public static void main(String[] args)
{
    double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
    Scanner scan=new Scanner(System.in);
    System.out.println("當前陣列只有"+class_score.length+"行,您想檢視第幾行的元素?請輸入:");
    int number=scan.nextInt();
    for(int j=0;j<class_score[number-1].length;j++)
    {
        System.out.println("第"+number+"行的第["+j+"]個元素的值是:"+class_score[number-1][j]);
    }
}

獲取整列元素

獲取指定列的元素與獲取指定行的元素相似,保持列不變,遍歷每一行的該列即可。

public static void main(String[] args)
{
    double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
    Scanner scan=new Scanner(System.in);
    System.out.println("您要獲取哪一列的值?請輸入:");
    int number=scan.nextInt();
    for(int i=0;i<class_score.length;i++)
    {
        System.out.println("第 "+(i+1)+" 行的第["+number+"]個元素的值是"+class_score[i][number]);
    }
}```