藍橋杯練習8+二維陣列的複習
藍橋杯練習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]);
}
}```