5.2多重循環和二維數組
阿新 • • 發佈:2019-02-06
圖形 第一個 換行 理解 rgs import can eth out
一.多重循環嵌套
1.循環可以任意次數嵌套
2.外層循環每執行一次,裏層循環就執行一遍
二.二維數組
1.定義:一維數組中存放的也是數組
2.聲明:int[][] nums = new int[5][5];
3.使用:nums[0][0] = 1; 我們可以將第一個下標理解為行數,第二個下標理解為列數
三.引用數據類型和基本數據類型的區別
1.基本數據類型存放的是數據,引用數據類型存放的是內存地址
2.基本數據類型賦值的話傳遞的是數據,而引用數據類型傳遞的是地址
四.例子
package com.demo1030; import java.util.Scanner; public class Demo { //例題:輸出1--100的數字,要求每行輸出10的數字 // public static void main(String[] args) { // int num = 1; // for(int i=0;i<10;i++){//行 // for(int j=0;j<10;j++){//列 // System.out.print(num +"\t"); // num++; // } // System.out.println(); // } // } /*2。打印輸出如下圖形:要求,用戶輸入行數,按照行數打印圖形 * ** *** **** ***** ****** ******* ******** **/ // public static void main(String[] args) { // Scanner scs = new Scanner(System.in); // System.out.println("請輸入行數:"); // int count = scs.nextInt(); // for(int i=0;i<count;i++){//行 輸出換行 // for(int j=0;j<=i;j++){//列 輸出* // System.out.print("*"); // } // System.out.println(); // } // } /** * 3.輸出乘法口訣表 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 ....... 1*9=9 ....................9*9=81 */ // public static void main(String[] args) { // for(int i=1;i<=9;i++){//行 輸出換行 // for(int j=1;j<=i;j++){//列 輸出* // System.out.print(i+"*"+j+"="+i*j+"\t"); // } // System.out.println(); // } // } /** * 4.輸出如下圖形 * *** ***** ******* ********* *********** */ // public static void main(String[] args) { // for(int i=1;i<=6;i++){//行 // for(int j=6;j>i;j--){//空格 // System.out.print(" "); // } // for(int k=1;k<=2*i-1;k++){//輸出* // System.out.print("*"); // } // System.out.println(); // } // } //5.聲明一個10行10列的二維數組,把裏面的所有元素賦值為1,然後輸出 // public static void main(String[] args) { // int[][] nums = new int[10][10]; // for (int i = 0; i < nums.length; i++) { // for(int j=0;j<nums[i].length;j++){ // nums[i][j] = 1; // } // } // // for (int i = 0; i < nums.length; i++) { // for(int j=0;j<nums[i].length;j++){ // System.out.print(nums[i][j]+"\t"); // } // System.out.println(); // } // } //基本數據類型和引用數據類型的區別 // public static void main(String[] args) { // int xm = 100; // int xh =200; // // xm = xh; // xm = 1000; // // System.out.println("xm="+xm); // System.out.println("xh="+xh); // // int[] xxm = {100}; // int[] xxh = {200}; // // xxm = xxh; // // xxm[0] = 1000; // System.out.println("xxm="+xxm[0]); // System.out.println("xxh="+xxh[0]); // } //6.聲明一個9行9列的二維數組,將1-81的數字填入到數組中 // a.先輸出所有元素的值 // b.求兩條對角線上的元素之和 // public static void main(String[] args) { // int[][] nums = new int[9][9]; // //存放1-81數字 // int num=1; // for (int i = 0; i < nums.length; i++) { // for (int j = 0; j < nums[i].length; j++) { // nums[i][j] = num; // num++; // } // } // // //輸出 // for (int i = 0; i < nums.length; i++) { // for (int j = 0; j < nums[i].length; j++) { // System.out.print(nums[i][j]+"\t"); // } // System.out.println(); // } // // //計算對角線元素之和 // int sum1 = 0;//對角線1 // int sum2 = 0; //對角線2 // for (int i = 0; i < nums.length; i++) { // for (int j = 0; j < nums[i].length; j++) { // if(i==j){//第一條對角線 // sum1+=nums[i][j]; // } // if(i+j==nums.length-1){ // sum2+=nums[i][j]; // } // } // } // // System.out.println(sum1); // System.out.println(sum2); // } }
/** * 1.用戶輸入行數,要求行數必須是奇數,如果不是讓用戶重新輸入。 * 然後根據行數打印輸出菱形 * *** ***** ******* ********* ******* ***** *** * */ package class1030; import java.util.Scanner; public class Test0201 { public static void main(String[] args) { // TODO Auto-generated method stub int nums,nums2; Scanner sc=new Scanner(System.in); do{ System.out.println("請輸入一個奇數"); nums=sc.nextInt(); if(nums<0||nums%2!=1){ System.out.println("輸入有誤,請重新輸入"); } }while(nums<0||nums%2!=1); nums2=nums/2+1; for(int i=1;i<=nums2;i++) { for(int j=1;j<=nums2-i;j++) { System.out.print(" "); } for(int k=1;k<=2*i-1;k++) { System.out.print("*"); } System.out.println(); } nums2=nums/2; for(int i=1;i<=nums2;i++) { for(int j=1;j<=i;j++) { System.out.print(" "); } for(int k=1;k<=2*(nums2-i)+1;k++) { System.out.print("*"); } System.out.println(); } } }
/** * 2.用戶輸入一個正整數,做因式分解:例如 * 輸入100 輸出100=2*2*5*5 * 輸入90 輸出90=2*3*3*5 * 輸入13 輸出13=1*13 */ package class1030; import java.util.Scanner; public class Test0202 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); System.out.println("請輸入一個正整數"); int num=sc.nextInt(); int i; int num1=num; System.out.print(num+"="); //最小公因數i是這個數本身時跳出循環 while(num!=1) { //從2開始整除,找到最小公因數時就跳出循環,每次得到最小公因數i for(i=2;i<num;i++) { if(num%i==0) { break; } } //如果最小公因數i是這個數本身時,為質數,本輪循環結束後將跳出while循環 if(i==num1) { System.out.print("1*"); } //每次輸出最小公因數i System.out.print(i); //得到除以最小公因數i後的值,繼續判斷是否還有最小公因數 num=num/i; //當最小公因數i是不是這個數本身時,輸出乘號 if(num!=1) { System.out.print("*"); } } } }
/* * 3.打印輸出楊輝三角形(10行): 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 ......... */ package class1030; public class Test0203 { public static void main(String[] args) { // TODO Auto-generated method stub int arr[][]=new int[10][]; for(int i=0;i<arr.length;i++){ arr[i]=new int[i+1]; for(int j=0;j<arr[i].length;j++){ if(j==i||j==0){ arr[i][j]=1; }else{ if(j<i){ arr[i][j]=arr[i-1][j]+arr[i-1][j-1]; } } System.out.print(arr[i][j]+"\t"); } System.out.println(); } } }
5.2多重循環和二維數組