Java基礎--關於分支、循環、數組的部分練習題及詳解

**-----分支題-----**

1、定義一個int類型的變量爲x並賦值爲5,如果x<10,則讓x實現自增,並輸出x最後的值。

package com.eduask;  //包名

public class Test {   //類


public static void main(String[] args) {  //主函數

int x=5; //聲明一個int類型的變量並初始化值爲5

if(x<10){  //if分支,如果x的值小於10,x=5,符合題意,進入分支

x++;   //x實現自增1,x=6

    }

System.out.println(x);  //打印出x的值

      }

         }


2、隨意輸入一個數字a,若a>20,輸出a的值。

package com.eduask;  //包名

import java.util.Scanner;//引入Scanner類

public class Test {   //類

public static void main(String[] args) {  //主函數

Scanner sc=new Scanner(System.in);//控制檯輸入函數Scanner

System.out.println("請隨意輸入一個數字:");//打印提示用戶輸入語句

int a=sc.nextInt();  //接受用戶輸入

if(a>20){  //分支,布爾表達式a>20爲判斷條件

System.out.println("a="+a);   //a的值大於20則打印a的值

}else{

System.out.println("請輸入大於20的數字"); //否則提示用戶此值太小

}

}

}


3、定義一個int類型的變量成績爲59,如果成績大於等於60,則輸出成績及格,否則,輸出成績不及     格。

package com.eduask;  //包名

import java.util.Scanner;//引入Scanner類

public class Test {   //類

public static void main(String[] args) {  //主函數

int score=59;//聲明一個int類型的變量score並初始化值爲59;

if(score>=60){  //如果score大於等於60

System.out.println("成績及格");//則打印成績及格

}else{

System.out.println("成績不及格");//否則成績不及格

}

}

}


4、編程輸入整數a和b,若a或b大於100,則輸出a,b的和與100的差,否則輸出兩數之和。

package com.eduask;  //包名

import java.util.Scanner;//引入Scanner類

public class Test {   //類

public static void main(String[] args) {  //主函數

Scanner sc=new Scanner(System.in);//控制檯輸入函數

System.out.println("請輸入整數a:");//提示用戶輸入整數a

int a=sc.nextInt(); //接受輸入

System.out.println("請輸入整數b:");//提示用戶輸入整數b

int b=sc.nextInt();//接受輸入

if(a>100||b>100){   //a或b大於100的條件判斷

          System.out.println("a+b-100="+(a+b-100));//若滿足,則輸出a,b的和與100的差

}else{

      System.out.println("a+b="+(a+b));//否則輸出兩數之和

}

}

}


5、從鍵盤輸入三角形的三邊長,判斷出這三邊能否構成三角形

package com.eduask;  //包名

import java.util.Scanner;//引入Scanner類

public class Test {   //類

public static void main(String[] args) {  //主函數

Scanner sc=new Scanner(System.in); //控制檯輸入函數Scanner

System.out.println("請輸入第一條邊a:");  //三角形第一條邊

int a=sc.nextInt();

System.out.println("請輸入第二條邊b:"); //第二條邊

int b=sc.nextInt();

System.out.println("請輸入第三條邊:");//第三條邊

int c=sc.nextInt();

if(a+b>c&&a+c>b&&b+c>a&&a-b<c&&a-c<b&&b-c<a){   //構成三角形的條件 

System.out.println("您輸入的數字能構成一個三角形");

}else{

System.out.println("不滿足條件,不能構成三角形");

}

}

}


6、隨便輸入一個數,判斷該數爲奇數還是偶數;

package com.eduask;  //包名

import java.util.Scanner;//引入Scanner類

public class Test {   //類

public static void main(String[] args) {  //主函數

Scanner sc=new Scanner(System.in); //控制檯輸入語句

System.out.println("請隨意輸入一個數:");  //提示輸入

int input=sc.nextInt();

if(input%2==0){    //取餘,若有餘數爲奇數,無餘數爲偶數

System.out.println("您輸入的數字爲偶數");

}else{

System.out.println("您輸入的數字爲奇數");

}

}

          }


7、寫程序輸出一個圓的面積;

package com.eduask;  //包名

import java.util.Scanner;//引入Scanner類

public class Test {   //類

public static void main(String[] args) {  //主函數

Scanner sc=new Scanner(System.in); //控制檯輸入語句

System.out.println("請隨意輸入圓的半徑:");  //提示輸入

double r=sc.nextDouble();

final double PI=3.14;  //定義圓的PI函數

System.out.println("圓的面積爲:"+PI*r*r);//求出圓的面積

}

}


8、根據輸入的月份,判斷該月份有多少天

    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){

     System.out.println("這個月有31天");

       }else if(month==4||month==6||month==9||month==11){

     System.out.println("這個月有30天");

       }else if(month==2){

          //根據年份  選擇2月多少天

      if(year%400==0||(year%4==0&&year%100!=0)){

         System.out.println("29");

       }else{

         System.out.println("28");

          }

         }else{

        System.out.println("輸入有誤!");//錯誤提示

}


9、輸入員工登記A、B、C級,判斷其是否加薪,加薪對應500、300、100(switch語句)

package com.eduask;  //包名

import java.util.Scanner;//引入Scanner類

public class Test {   //類

public static void main(String[] args) {  //主函數

Scanner sc=new Scanner(System.in);

System.out.println("請輸入您的等級:");

char input=sc.next().charAt(0);

switch(input){

case 'A':

System.out.println("加500");

break;

case 'B':

System.out.println("加300");

break;

case 'C':

System.out.println("加100");

break;

 default:

System.out.println("您沒有等級");

break;

}

}

  }


10、隨意輸入一個數字1-7,判斷是周幾,輸入其他數字提示輸入錯誤。(switch語句寫)

package sore_hs_jdbc;

import java.util.*;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

System.out.println("請輸入1-7間的數字:");

int input =sc.nextInt();

switch(input){

case 1:

System.out.println("週一");

break;

case 2:

System.out.println("週二");

break;

case 3:

System.out.println("週三");

break;

case 4:

System.out.println("週四");

break;

case 5:

System.out.println("週五");

break;

case 6:

System.out.println("週六");

break;

case 7:

System.out.println("週日");

break;

default:

System.out.println("您輸入的數字有誤,請重新輸入");

   break;

}


}


}


11、聲明顏色種類爲5種;分別有紅、綠、黃、粉、藍,若用戶輸入其中一種,則得到其RGB值;若用戶    輸入皆不滿足該條件,則輸出黑色的RGB值;


package sore_hs_jdbc;

import java.awt.Color;

import java.util.*;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

System.out.println("請隨意輸入1-5之間的數:");

int colorNum=sc.nextInt();

switch(colorNum){

case 1:

System.out.println(Color.red);

break;

case 2:

System.out.println(Color.green);

break;

case 3:

System.out.println(Color.yellow);

break;

case 4:

System.out.println(Color.pink);

break;

case 5:

System.out.println(Color.blue);

break;

default:

   System.out.println(Color.black);

break;

}


}


}


**-----循環-----**


1、打印1--4之間的自然數。

package sore_hs_jdbc;

public class Test {

public static void main(String[] args) {

for(int i=1;i<=4;i++){

System.out.println(i);

}


}


}


2、實現求1-10這10個數字的和 。

package sore_hs_jdbc;

public class Test {

public static void main(String[] args) {

int sum=0;

for(int i=1;i<=10;i++){

System.out.println("sum="+sum+";i="+i);

sum=sum+i;

}


}


}


3、實現求1-100之和  。

package sore_hs_jdbc;

public class Test {

public static void main(String[] args) {

int sum=0;//存和

for(int i=1;i<=100;i++){

sum=sum+i;

}

System.out.println(sum);

}


}


4、輸出1-100之間的偶數 。

package sore_hs_jdbc;

public class Test {

public static void main(String[] args) {

System.out.print("偶數爲:");

for(int i=1;i<=100;i++){

if(i%2==0){

System.out.print(i+" ");

}

}

}

}


5、計算10的階乘

package sore_hs_jdbc;

public class Test {

public static void main(String[] args) {

int jiecheng=1;//存放階乘積

for(int i=1;i<=10;i++){

jiecheng=jiecheng*i;

}

System.out.println("階乘="+jiecheng);

}

}


6、用戶輸入一個1--10以內的數字,通過運算求出該數字的階乘

package sore_hs_jdbc;

import java.util.*;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

System.out.println("請輸入1-10之間的任意整數");

int a=sc.nextInt();

if(a>=1&&a<=10){

int jiecheng=1;

for(int i=1;i<=a;i++){

jiecheng=jiecheng*i;

System.out.println("jiecheng="+jiecheng);

}

}else{

System.out.println("您的輸入不合法");

}

}

}


7、.由輸入的值決定循環的執行次數,循環變量默認從1開始 。

package sore_hs_jdbc;

import java.util.*;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

System.out.println("請隨意輸入一個整數");

int count=sc.nextInt();

for(int i=1;i<=count;i++){

System.out.println(i);

}

}

}


8、手動輸入兩個數字m和n,運算求出m~n之間所有偶數的和

public class Test {

public static void main(String[] args) {


Scanner sc=new Scanner(System.in);

System.out.println("請隨意一個數m");

int m=sc.nextInt();

System.out.println("請輸入一個數n");

int n=sc.nextInt();

int sum=0;//存儲和

if(m>n){

for(int i=n;i<=m;i++){

if(i%2==0){

sum+=i;

}

}

System.out.println("sum="+sum);

}else if(m<n){

for(int i=m;i<=n;i++){

if(i%2==0){

sum+=i;

}

}

System.out.println("sum="+sum);

}else if(m==n){

if(m%2==0||n%2==0){

sum=n+m;

System.out.println("sum="+sum);

}else{

System.out.println("您輸入的數字不是偶數");

}

}else{

System.out.println("您輸入的數字不合法");

}

}

}


9、已知1×2×3×…×n=s,計算出s不大於5000時n的最大值。

public class Test {

public static void main(String[] args) {

int s = 1;//存儲s的和

for(int n=1; ;n++){

s*=n;

if (s>5000) {

System.out.println(n-1);//s大於5000時,n回退一步即s不大於5000時的值

break;

}

}

}

}


10、輸入五個數,通過運算,求出這五個數最大值或最小值。

package com.jdbc.add;

import java.util.Scanner;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

int max=0;//最大數

int min=0;//最小數

for(int i=1;i<=5;i++){

System.out.println("請輸入第"+i+"數字:");

int input=sc.nextInt();

if(i==1){

min=input;

max=input;

}else{

if(input>max){

max=input;

}else if(input<min){

min=input;

}

}

}

System.out.println("max="+max);

System.out.println("min="+min);

}

}


11、求1到100的奇數之和、偶數之和

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

int count=0;//偶數和

int sum=0;//奇數和

for(int i=1;i<=100;i++){

if(i%2==0){//偶數

count=count+i;

}else if(i%2!=0){

sum=sum+i;

}

}

System.out.println("count="+count);

System.out.println("sum="+sum);

}

}


12、把100——200中不能被3整除的數輸出,每四個換一行輸出  。

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

int count = 0;

for(int i=100; i<=200; i++){

if (i%3 != 0) {

count++;

System.out.print(i+"  ");

if (count%4 == 0) {

System.out.println(" ");

}

}

}

}

}


13、計算機隨機產生一個整數,用戶進行猜數。只能猜三次。例:用戶未猜正確,輸入數太大或小進行提示,滿三次過後,提示再見。

package com.jdbc.add;

import java.util.*;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

for(int i=1;i<4;i++){

System.out.println("請輸入您猜的數:"+"您還有"+(4-i)+"次機會");

int input=sc.nextInt();

int a=(int)(Math.random()*10);

System.out.println("生成的隨機數爲:"+a);

if(i>=1&&i<3){

if(input>a){

System.out.println("您輸入的數字太大");

}else if(input<a){

System.out.println("您輸入的數字太小");

}else if(input==a){

System.out.println("恭喜您,猜對啦");

break;

}

}else if(i==3){

System.out.println("您的操作已超過三次,再見");

break;

}

}

}

}


14、隨機生成一個數(範圍自定),直到生成的數是88,則跳出循環,並統計一共執行了多少次(使用 

   break)  。

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

int count=0;//一共執行了count次

for(;;){

int num=(int)(Math.random()*100);

count++;

if(num==88){

System.out.println("count="+count);

break;

}

}

}

}


15、判斷一下1-10000之間有多少個7的倍數


package com.jdbc.add;

public class Test {

public static void main(String[] args) {

int count=0;//count個數是7的倍數

for(int i=1;i<=10000;i++){

if(i%7==0){

count++;

}

}

System.out.println(count);

}

}


16、有一羣豬(100-200之間),如果分成4個豬一組,則多2個豬;若分成7個豬一組則多3個豬;若分成9

   個豬一組,則多5個豬,試求出豬的總數.

package com.jdbc.add;

import java.util.*;

public class Test {

Scanner sc=new Scanner(System.in);

public static void main(String[] args) {

for(int i=100;i<=200;i++){

if(i%4==2&&i%7==3&&i%9==5){

System.out.println("豬的總數爲="+i);

}

}

}

}


17、通過年齡,算出你的出生年份,並輸出結果:xx年,你xx歲。

package com.jdbc.add;

import java.util.*;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

System.out.println("請輸入您的年齡:");

int nl=sc.nextInt();

int nf=2016;

int csnf=nf-nl;//出生年份

for(int i=0;i<=nf;i++){

nl++;

csnf--;

System.out.println("您輸入的年齡是"+(nl-1)+",您的出生年齡是"+(csnf+1));

}

}

}


18、有1、2、3、4個數字,能組成多少個無重複數字的三位數?都是多少?

package com.jdbc.add;

import java.util.*;

public class Test {

Scanner sc=new Scanner(System.in);

public static void main(String[] args) {

int count=0;

for(int i=1;i<=4;i++){

for(int j=1;j<=4;j++){

for(int k=1;k<=4;k++){

     if(i!=j&&i!=k&&j!=k){

     System.out.print(i+j*10+k*100+" ");

     count++;

     }

}

}

}

System.out.println("共"+count+"個");

}

}


19、(1*1)+(1*2)+(1*2*3)+(1*2*3*4)+(1*2*3*4*5);共5次積相加

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

int sum=0;

int jiecheng=1;

for(int i=1;i<=5;i++){

jiecheng*=i;

sum+=jiecheng;

System.out.println("jiecheng="+jiecheng);

}

System.out.println("sum="+sum);

}

}


20、畫出下列圖形

*******

****** 

*****

****

***

**

*

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

for(int count =1;count <= 7;count ++){

for(int x=8;x>count;x--){

System.out.print("*");

}

System.out.println();

}

}

}


21、畫出下列圖形

*

**

***

****

*****

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

for(int count=1;count<=5;count++){

for(int x=1;x<=count;x++){

System.out.print("*");

}

System.out.println();

}

}

}


22、畫出下列圖形

*******

 ***** 

  ***

   *

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

for(int count=1;count<=4;count++){ //打印行數

for(int page=0;page<count;page++){ //打印空格數

System.out.print(" ");

}

for(int x=7;x>=count*2-1;x--){//打印*數

System.out.print("*");

}

System.out.println();  //換行

}

}

}


23、畫出下列圖形

    *

   ***

  *****

 *******

  *****

   ***

    *

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

for(int count=1;count<=7;count++){   //共7行

System.out.println();

if(count<=4){//打印前4行

for(int page=3;page>=count;page--){//打印空格

System.out.print(" ");

}

for(int x=1;x<=count*2-1;x++){

System.out.print("*");

}

}else{//打印後三行

for(int page=5;page<=count;page++){

System.out.print(" ");

}

for(int x=5;x>count*2-10;x--){

System.out.print("*");

}

}

}

}

}


24、婚禮上的謊言

   三個新郎爲A、B、C,三個新娘爲X、Y、Z。

有人想知道究竟誰和誰結婚,

於是就問新人中的三位,得到如下提示:

A說他將和X結婚;A!=X

X說她的未婚夫是C,X!=C

C說他將和Z結婚。C!=Z

這個人事後知道他們在開玩笑,全是假話,

那麼,究竟誰與誰結婚呢?

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

for(char A='X';A<='Z';A++){

for(char B='X';B<='Z';B++){

for(char C='X';C<='Z';C++){

if(A!='X'&&'X'!=C&&C!='Z'&&A!=B&&A!=C&&B!=C){

System.out.println("A="+A);

System.out.println("B="+B);

System.out.println("C="+C);

}

}

}

}

}

}


25、我國古代數學家張丘建在'算經'裏曾提出一個世界數學史上有名的百雞問題:'雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,問雞翁、母、雛各幾何?

package com.jdbc.add;

public class Test {

public static void main(String[] args) {


for(int w=0;w<=20;w++){

for(int m=0;m<=33;m++){

for(int c=0;c<=300;c++){

if(w+m+c==100&&w*5+m*3+c/3==100&&c%3==0){

System.out.println("w="+w+" "+"m="+m+" "+"c="+c);

}

}

}

}

}

}


26、三個班的同學參加比賽,每個班五名同學,

1.求出各班的總分和平均分

2.求出各班的最高分

3.求出全部分數中的最高分

package com.jdbc.add;

import java.util.Scanner;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

double maxscore=0;//全部的最高分

for(int i=0;i<3;i++){//3個班

double sum=0;//總分

double ava=0;//平均分

  double max=0;//各班最高分

for(int j=0;j<5;j++){

System.out.println("請輸入第"+(i+1)+"個班,第"+(j+1)+"個同學的分數");

double s=sc.nextDouble();

sum+=s;//總分

ava=sum/5;//平均分

if(s==1){

max=s;

}else if(s>max){

max=s;//最大分數

}

}

System.out.println("第"+(i+1)+"個班的總分爲"+sum);

System.out.println("第"+(i+1)+"個班的平均分爲"+ava);

System.out.println("第"+(i+1)+"個班的最高分爲"+max);

if(max>maxscore){

maxscore=max;

}

}

System.out.println("所有班級中最高的分數爲:"+maxscore);

}

}


27、模擬註冊以及登陸:

    1.註冊不知道用戶的操作次數,所以需要使用死循環

    2.當用戶確定了用戶名和密碼後,註冊成功,保存下用戶輸入的用戶名以及密碼

    3.登陸最多隻能三次,如果第三次還沒有成功直接退出程序

package com.jdbc.add;

import java.util.Scanner;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

String name;

String pwd;

for(;;){   //死循環,註冊

System.out.println("請輸入註冊name");

name=sc.next();

System.out.println("請輸入註冊pwd:");

pwd=sc.next();

System.out.println("是否確認:y/n");

char sure=sc.next().charAt(0);

if(sure=='Y'||sure=='y'){

System.out.println("success");

break;

}else{

System.out.println("error,請重新輸入");

}

}

for(int i=1;i<=3;i++){   //登錄

System.out.println("請輸入您的name:");

String name_l=sc.next();

System.out.println("請輸入您的pwd:");

String pwd_l=sc.next();

if(name_l.equals(name)&&pwd_l.equals(pwd)){

System.out.println("success");

break;

}else{

System.out.println("名字或密碼錯誤,你還有"+(3-i)+"次機會登錄");

}if(i==3){

System.out.println("號碼已凍結,再見");

break;

}

}

}

}

===========================================================================

String username="";

String password="";

for(;;){//註冊

System.out.println("請輸入您要註冊的用戶名:");

username=sc.next();

System.out.println("請輸入您要註冊的密碼:");

password=sc.next();

System.out.println("請確認密碼:");

String pwd=sc.next();

if(pwd.equals(password)){

System.out.println("密碼一致,註冊成功");

}else{

System.out.println("密碼不一致,請重新註冊");

continue;

}

for(int i=1;i<=3;i++){//登錄

System.out.println("請輸入您的登錄名:");

String name=sc.next();

System.out.println("請輸入您的密碼:");

String pwd1=sc.next();

if(name.equals(username)&&pwd1.equals(password)){

System.out.println("登錄成功");

System.exit(0);

}else{

System.out.println("密碼或用戶名錯誤,您還有"+(3-i)+"次機會");

}


if(i==3){

System.out.println("您的號碼已凍結,再見");

System.exit(0);

}

}

}


28、隨意輸入一個數判斷是否爲質數(標記)

package com.jdbc.add;

import java.util.*;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

System.out.println("請輸入一個數");

int a=sc.nextInt();

boolean flag=true;//條件爲真時,爲標記,質數:大於1,質因數只有1和本身

if(a>=2){

for(int i=2;i<a;i++){

if(a%i==0){

flag=false;

}

}

if(flag){

System.out.println("質數");

}else{

System.out.println("不是質數");

}

}else{

System.out.println("您輸入的數字不合法");

}

}

}


29、輸出乘法口訣

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

for(int i=1;i<10;i++){

for(int j=1;j<i+1;j++){

System.out.print(j+"*"+i+"="+(j*i)+" ");

}

System.out.println();

}

}

}


30、用循環方式實現和計算機玩猜拳的程序 (設定勝出條件--輸3次或贏3次即退出)


package com.sore.preparedstatement;


import java.util.Scanner;


public class Test {

public static void main(String[] args){

Scanner sc=new Scanner(System.in);

int o=0;

int r=0;

for(;;){

System.out.println("請出拳(1.表示石頭、2.表示剪刀、3.表示布)");

int p = sc.nextInt();

switch (p){

case 1:

System.out.println("用戶出的石頭、");

break;

case 2:

System.out.println("用戶出的剪刀、");

break;

case 3:

System.out.println("用戶出的布、");

break;

}

int q = (int)(Math.random()*3+1);

switch (q){

case 1:

System.out.println("電腦出的石頭、");

break;

case 2:

System.out.println("電腦出的剪刀、");

break;

case 3:

System.out.println("電腦出的布、");

break;

}

if((p==1 && q ==2) || (p==2 && q ==3) || (p==3 && q ==1) ){

System.out.println("用戶猜拳贏了");

o++;

}else if ((p==1 && q ==3) || (p==2 && q ==1) || (p==3 && q ==2)  ){

System.out.println("用戶猜拳輸了");

r++;

}else if (p==q){

System.out.println("平局");

}else{

System.out.println("輸入有誤");

}if(o == 3){

System.out.println("你是最後的贏家");

break;

}if(r == 3){

System.out.println("電腦是最後的贏家");

break;

}

}

}

}

**-----數組-----**


1、定義一個數組,由鍵盤輸入值來賦值,並輸出該數組的各值


package com.sore.preparedstatement;

import java.util.Scanner;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

   int a[]=new int[5];//聲明一維數組長度爲5;

   for(int i=0;i<a.length;i++){  //循環輸入5個數並將值賦給數組a[i]

   System.out.println("請輸入第"+(i+1)+"個數");

   a[i]=sc.nextInt(); //接收輸入

   }

   System.out.println("數組的數依次爲:");

   for(int i=0;i<a.length;i++){  //循環得到5個數

   System.out.println("a["+i+"]="+a[i]);

   }

}

}


2、用隨機數給一個整型數組賦值,並對數組求和。(範圍自定)


package com.sore.preparedstatement;

public class Test {

public static void main(String[] args) {

int a[]=new int[5];//定義一維數組並聲明數組長度

int sum=0;//求和

for(int i=0;i<a.length;i++){

a[i]=(int)(Math.random()*10); //得到隨機數並將值賦給數組

}

System.out.println("數組的值爲:");

for(int i=0;i<a.length;i++){

System.out.println("a["+i+"]="+a[i]);

sum+=a[i]; //求和

}

System.out.println("sum="+sum);

}

}


3、對一組已經賦值的int類型的數組,找出其中的最大值和最小值


package com.sore.preparedstatement;

public class Test {

public static void main(String[] args) {

int a[]={2,3,4,5,88,}; //聲明二維數組,並賦值

int max=a[0]; //定義最大值max

int min=a[0]; //定義最小值min

for(int i=0;i<a.length;i++){

System.out.println("a[i]="+a[i]);//賦值給數組a

if(i==0){   //當循環第一次執行時,最大值max和最小值min都爲得到的第一個數

max=a[i];

min=a[i];

}else{

if(a[i]>max){ //當數組裏找到比最大值max還要大時便將值賦給max

max=a[i];

}else if(a[i]<min){ //當數組裏找到比最小值min還要小時便將值賦給min

min=a[i];

}

}

}

System.out.println("min="+min);

System.out.println("max="+max);

}

}


4、聲明一個隨機數組,獲得數組的長度、最大值、最小值

package com.sore.preparedstatement;

public class Test {

public static void main(String[] args) {

int a[]=new int[(int)(Math.random()*10)];//聲明隨機數組

int min=a[0];//最小值

int max=a[0];//最大值

for(int i=0;i<a.length;i++){

a[i]=(int)(Math.random()*10); //將隨機數組賦給a,遍歷

System.out.println("a["+i+"]="+a[i]);

if(i==0){   

max=a[i];

min=a[i];

}else{

if(a[i]>max){

max=a[i];

}else if(a[i]<min){

min=a[i];

}

}

}

System.out.println("數組的長度="+a.length);//得到隨機生成的數組長度

System.out.println("min="+min);

System.out.println("max="+max);

}

}


5、輸入某年某月某日,判斷這一天是這一年的第幾天? 

程序分析:以3月5日爲例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大於3時需考慮多加一天。

package com.sore.preparedstatement;

import java.util.*;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

int days[]={31,28,31,30,31,30,31,31,30,31,30,31};

System.out.println("請輸入年份:");

int year=sc.nextInt();

System.out.println("請輸入月份:");

int mouth=sc.nextInt();

System.out.println("請輸入日:");

int day=sc.nextInt();

int allday=0;//共多少天

for(int i=0;i<mouth-1;i++){

allday+=days[i];//每個月的天數累加得到全部天數

}

if((year%4==0&&year%100!=0||year%400==0)&&mouth>3){ //給出條件判斷

allday++;

}

System.out.println(allday+day);

}

}


6、利用數組保存超市庫存數據,結合下標的應用完成簡易超市小票的打印

如:

請輸入購買商品:毛巾

請輸入單價:25.0

請輸入購買數量:2


======歡迎光臨**超市===========

商品名稱   單價     數量     總價

毛巾       25.0       2      50.0

您一共消費:50.0元 

public class Test {

public static void main(String[] args){

Scanner sc=new Scanner(System.in);

String name[]={"毛巾","辣條"};

double price[]={10,20};

int index=-1;

int index_p=-1;

while(true){

System.out.println("請輸入您要購買的商品:");

String name_buy=sc.next();

System.out.println("請輸入您要購買的商品單價:");

double price_buy=sc.nextDouble();

System.out.println("請輸入您要購買的數量:");

int num=sc.nextInt();

for(int i=0;i<name.length;i++){

for(int j=0;j<price.length;j++){

if(name_buy.equals(name[i])&&price_buy==price[j]){

index=i;

index_p=j;

}

}

}

if(index!=-1&&index_p!=-1){

System.out.println("該商品存在");

System.out.println("======歡迎光臨**超市===========");

System.out.println("商品名稱\t單價\t 數量\t總價");

System.out.println(name_buy+"\t"+price_buy+"\t"+num+"\t"+price_buy*num);

System.out.println("您一共消費:"+price_buy*num+"元");

}else{

System.out.println("商品不存在或價格錯誤");

}

}

       }

}



7、使用隨機數給一個10個元素的一維數組賦值,對10個整數排序。

*冒泡排序法

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

int a[]=new int[10];//聲明一個長度爲10,int類型的一維數組

for(int i=0;i<a.length;i++){

a[i]=(int)(Math.random()*10);//得到隨機數組a[i]

}

for(int i=1;i<a.length;i++){  //對隨機生成的數組進行排序

for(int j=0;j<a.length-i;j++){

if(a[j]>a[j+1]){

int temp=a[j];  //聲明一箇中間值

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

for(int i=0;i<a.length;i++){   //得到隨機排序後的數組並打印

System.out.print(a[i]+" ");

}

}

}

=======================================================

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

 int a[]=new int[10];//聲明一個長度爲10的int類型數組

 for(int i=0;i<a.length;i++){

 a[i]=(int)(Math.random()*10);//得到隨機數組

 }

 System.out.println("隨機生成的數組:");

 for(int i=0;i<a.length;i++){

 System.out.print(a[i]+" ");

 }

for(int i=0;i<a.length;i++){

for(int j=0;j<a.length;j++){

if(a[j]>a[i]){

int temp=a[j];

a[j]=a[i];

a[i]=temp;

}

}

}

System.out.println();

for(int i=0;i<a.length;i++){

System.out.print(a[i]+" ");

}

}

}


8、使用隨機數給一個10個元素的一維數組賦值,讓其倒序輸出。

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

 int a[]=new int[10];//聲明一個長度爲10的int類型數組

 for(int i=0;i<a.length;i++){

 a[i]=(int)(Math.random()*10);//得到隨機數組

 }

 System.out.println("隨機生成的數組:");

 for(int i=0;i<a.length;i++){

 System.out.print(a[i]+" ");

 }

 for(int i=1;i<a.length;i++){

 for(int j=0;j<a.length-i;j++){

 int temp=0;//中間值

 temp=a[j];

 a[j]=a[j+1];

 a[j+1]=temp;

 }

 }

 System.out.println();

 System.out.println("倒序後的數組:");

 for(int i=0;i<a.length;i++){

 System.out.print(a[i]+" ");

 }

}

}


9、用程序隨機生成50個0-9之間的隨機數,將每個數字出現的次數

存入一個一維數組中,統計出現次數最多和出現次數最少的數字,及出現次數

和出現頻率。

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

  int[] nums=new int[50];

for(int i=0;i<nums.length;i++){//隨機生成50個數

nums[i]=(int)(Math.random()*10);//隨機數

nums[i]++;//自增

}

int maxindex=0;//存儲次數多的

int minindex=0;//存儲次數少的

for(int i=0;i<nums.length;i++){//比較大小交換位置

if(nums[maxindex]<nums[i]){

maxindex=i;

}

if(nums[minindex]>nums[i]){

minindex=i;

}

}

for(int i=0;i<nums.length;i++){

if(nums[maxindex]==nums[i]){

System.out.println("出現次數最多的爲"+i+",出現的次數爲"+nums[i]+",出現的頻率爲"+(nums[i]/50.0));

}

if(nums[minindex]==nums[i]){

System.out.println("出現次數最少的爲"+i+",出現的次數爲"+nums[i]+",出現的額頻率爲"+(nums[i]/50.0));

}

}

}

}


10、對隨機生成的數組使用sort方法進行排序 。

package com.jdbc.add;

import java.util.*;

public class Test {

public static void main(String[] args) {

int a[]=new int[10];

for(int i=0;i<a.length;i++){

a[i]=(int)(Math.random()*10);//數組得到隨機

}

for(int i=0;i<a.length;i++){

System.out.print(a[i]+" ");

}

System.out.println();   //換行

Arrays.sort(a);//使用arrays的sort方法對數進行排序

for(int i=0;i<a.length;i++){  //遍歷得到排序後的數組輸出

System.out.print(a[i]+" ");

}

}

}


11、使系統生成50個0-9之間的隨機數,將每個數字出現的次數

存入一個一維數組中,統計出現次數最多和出現次數最少的數字,及出現次數

和出現頻率  。

package com.jdbc.add;

public class Test {

public static void main(String[] args) {

int [] nums=new int[10];

for(int i=0;i<50;i++){

int num=(int)(Math.random()*10);//隨機生成0-9

nums[num]++;//生成隨機數  對應下標位置  自增

}

int maxIndex=0;//存儲出現最多次數的下標

int minIndex=0;//存儲出現最少次數的下標

//循環數組

for(int i=1;i<nums.length;i++){

//比較大小  交換位置

if(nums[maxIndex]<nums[i]){

maxIndex=i;

}

//比較大小  交換位置

if(nums[minIndex]>nums[i]){

minIndex=i;

}

}

//循序數組,比較數組中是否存在和最多最少 一致的次數

for(int i=0;i<nums.length;i++){

if(nums[maxIndex]==nums[i]){

System.out.println("最多的數是:"+i+","

+ "出現了"+nums[i]+",出現的頻率:"+(nums[i]/50.0));

}

if(nums[minIndex]==nums[i]){

System.out.println("最少的數是:"+i+","

+ "出現了"+nums[i]+",出現的頻率:"+(nums[i]/50.0));

} 

}

}

}


12、利用函數實現模塊化編程的實踐


題目:仿ATM的操作


要求: 1.利用如下方法在類中指定一個變量,作爲用戶的賬戶:

public static double z = 0;  聲明在類中,和函數是平級關係

2. 分別聲明三個函數,用於表示存錢/取錢/查詢餘額 三種操作

函數的要求如下:

存:public static void savemoney(double money){}

取:public static void catchmoney(double money){}

查:public static void showmoney(){}

        修改密碼:public static void changepwd(String oldpwd,String newpwd){}


3.設計用戶交互:

3.1 設計一個歡迎界面,可參考下述方式:

*****************************************

*   歡迎使用**銀行ATM自動操作櫃員機     *

**

*****************************************

3.2 設計功能選項提示,可參考下述方式:

          

        註冊(無限次註冊)登錄(限制3次登錄)成功過後,

請選擇功能: 1.存錢 2.取錢 3.查詢餘額 4.修改密碼 4.退出


3.3 結合循環,分支,函數, 實現上述功能


package com.sore.preparedstatement;


import java.util.Arrays;

import java.util.Scanner;

/*

 * 存:public void savemoney(double money){}

取:public void catchmoney(double money){}

查:public void showmoney(){}

        修改密碼:public void changepwd(String oldpwd,String newpwd){}

 * */

public class Test {

static double balance;

static Scanner sc=new Scanner(System.in);

public static void main(String[] args){

while(true){

System.out.println("請輸入您要操作的選項:1.存錢;2.取錢;3.查詢餘額;4.修改密碼;5.退卡");

int type=sc.nextInt();

switch(type){

case 1:

savemoney(0);

break;

case 2:

catchmoney(0);

break;

case 3:

showmoney();

break;

case 4:

break;

}

}

}

public static void savemoney(double money){

System.out.println("請輸入您要存入的money:");

double mmoney=sc.nextDouble();

if(mmoney%100==0){

balance+=mmoney;

System.out.println("存錢成功,當前餘額爲"+balance);

}else{

System.out.println("存錢失敗,請放入面額爲100的鈔票");

}

}

public static void catchmoney(double money){

System.out.println("請輸入您要取出的金額:");

double mmoney=sc.nextDouble();

if(mmoney<balance&&mmoney%100==0){

balance-=mmoney;

System.out.println("取錢成功,當前餘額爲"+balance);

}else{

System.out.println("餘額不足或金額輸入錯誤,取錢失敗");

}

}

public static void showmoney(){

System.out.println("當前餘額="+balance);

}

public static void changepwd(String oldpwd,String newpwd){

System.out.println("請輸入您");

}

}

================================================================================

package com.eduask.day01;


import java.util.Scanner;


class User{

String name;

String pwd;

double balance;

public void registLogin(){//用戶登錄註冊

for(;;){

Scanner sc=new Scanner(System.in);

System.out.println("請輸入您的註冊賬戶");

name=sc.next();

System.out.println("請輸入您的註冊密碼");

pwd=sc.next();

System.out.println("請確認您的註冊密碼");

String pwd1=sc.next();

if(pwd1.equals(pwd)){

System.out.println("註冊成功");

break;

}else{

System.out.println("兩次密碼不一致,是否重新註冊Y/N");

char input=sc.next().charAt(0);

if(input=='Y'||input=='y'){

   System.out.println("重新註冊");

}else if(input=='N'||input=='n'){

System.out.println("退出註冊");

break;

}

}

}

for(int i=1;i<=3;i++){// 登錄

Scanner sc=new Scanner(System.in);

System.out.println("請輸入您的登錄賬戶名");

String name2=sc.next();

System.out.println("請輸入您的登錄密碼");

String pwd2=sc.next();

if(name2.equals(name)&&pwd2.equals(pwd)){

System.out.println("登錄成功");

break;

}else{

System.out.println("登錄失敗,您還有"+(3-i)+"次登錄機會");

}if(i==3){

System.out.println("3次已用完,請間隔三小時再進行登錄");

break;

}

}

}

public void savemoney(double money){

if(money%100==0){

balance+=money;

System.out.println("存款成功");

}else{

System.out.println("請放置不超過100張面額爲100的鈔票");

}

}

public void catchmoney(double money){

if(money>balance){

System.out.println("您的餘額不足");

}else{

balance-=money;

System.out.println("取款成功");

}

}

public void showmoney(){

System.out.println("您的餘額爲"+balance);

}

public void changepwd(String oldpwd,String newpwd){

if(oldpwd.equals(pwd)){

pwd=newpwd;

System.out.println("修改成功");

}else{

System.out.println("兩次密碼不一致,修改失敗");

}

}

}

=========================================================

public class Ch01Atm {


public static void main(String[] args) {

User user=new User();

user.registLogin();

Caozuo(user);

}

public static void Caozuo(User a){

while(true){

Scanner sc=new Scanner(System.in);

System.out.println("1.存款;2.取款;3.查詢餘額;4.修改密碼;5.退卡");

System.out.println("請輸入您的操作選項");

int input=sc.nextInt();

if(input==1){

System.out.println("請放置不超過100張面額爲100的鈔票");

double money=sc.nextDouble();

a.savemoney(money);

}else if(input==2){

System.out.println("請輸入您的取款金額");

double money=sc.nextDouble();

a.catchmoney(money);

}else if(input==3){

a.showmoney();

}else if(input==4){

System.out.println("請輸入您的原密碼");

String oldpwd=sc.next();

System.out.println("請輸入您的新密碼");

String newpwd=sc.next();

a.changepwd(oldpwd, newpwd);

}else if(input==5){

System.out.println("再見,歡迎下次光臨");

break;

}

}


}

}

**-----關於排序-----**

1.冒泡排序

package com.jdbc.add;

/**

 * 冒泡排序

 * */

public class Test {

public static void main(String[] args) {

int a[]=new int[10];

for(int i=0;i<a.length;i++){

a[i]=(int)(Math.random()*10);//數組得到隨機

}

for(int i=0;i<a.length;i++){

System.out.print(a[i]+" ");

}

System.out.println();   //換行

for(int i=1;i<a.length;i++){

for(int j=0;j<a.length-i;j++){

if(a[j]>a[j+1]){

int temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

for(int i=0;i<a.length;i++){  //遍歷得到結果

System.out.print(a[i]+" ");

}

}

}


2、直接選擇排序

package com.sore.preparedstatement;

public class Test {

public static void main(String[] args) {

int a[]={2,1,4,99,7,3};//聲明數組

for(int i=1;i<a.length;i++){//執行的次數

int index=0;//存儲最大的數

for(int j=1;j<=a.length-i;j++){//元素比較

if(a[j]>a[index]){

index=j;//找到最大的數

}

}

int temp=a[a.length-i];//把第一個元素值保存到臨時變量中

a[a.length-i]=a[index];//比較,做交換,把第二個值保存到第一個元素單元中

a[index]=temp;//把臨時變量也就是第一個元素原值保存到第二個元素中

}

for(int i=0;i<a.length;i++){//遍歷輸出排序後的數組

System.out.print(a[i]+" ");

}

}

}


3、反轉排序(倒序輸出)

package com.sore.preparedstatement;

public class Test {

public static void main(String[] args) {

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

int len=a.length;//反轉次數

for(int i=0;i<len/2;i++){ //次數

int temp=a[i];

a[i]=a[len-1-i];

a[len-1-i]=temp;

}

for(int i=0;i<a.length;i++){

System.out.print(a[i]+" ");

}

}

}


4、得到一維數組int a[]={1,4,7,9,10}的下標位;

package com.sore.preparedstatement;

import java.util.Scanner;

public class Demo {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

int a[]={1,4,7,9,10};

System.out.println("請輸入您要查找的數:");

int input=sc.nextInt();

int index=-1;//記錄下標,若爲-1則是沒找到該數

for(int i=0;i<a.length;i++){

if(a[i]==input){

index=i;//將值賦給下標index

}

}

if(index!=-1){

System.out.println("找到該數,下標位"+index);

}else{

System.out.println("未找到該數");

}

}

}


4、得到一維數組int a[]={1,4,7,9,10}中數值10的下標位;

package com.sore.preparedstatement;

import java.util.Scanner;

public class Demo {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

int a[]={1,4,7,9,10};

int index=-1;

for(int i=0;i<a.length;i++){

if(a[i]==10){

index=i;

}

}

if(index!=-1){

System.out.println("該數的下標位="+index);

}else{

System.out.println("錯誤");

}

}

}


5、有數組int a[]={1,4,7,9,10,22,89,38,77,90};進行冒泡排序,並得到最小及最大值輸出,並找到數值89的下標位是多少.並得到能被2整除的數,並得到符合條件的總個數。

package com.sore.preparedstatement;

import java.util.Scanner;

//有數組int a[]={1,4,7,9,10,22,89,38,77,90};進行冒泡排序,並得到最小及最大值輸出,並找到數值89的下標位是多少.

public class Demo {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

int a[]={1,4,7,9,10,22,89,38,77,90};

int temp;//臨時變量,用來保存元素

for(int i=1;i<a.length;i++){//控制循環次數,交換輪數

for(int j=0;j<a.length-i;j++){ //元素交換

if(a[j]>a[j+1]){//第一個數大於第二個數時

temp=a[j];//將第一個數保存在臨時變量中

a[j]=a[j+1];//將第二個數保存在第一個變量中

a[j+1]=temp;//將開始的變量賦給第二個變量

}

}

}

int max=0;

int min=0;

for(int i=0;i<a.length;i++){

System.out.print(a[i]+" ");

if(i==0){

max=a[0];

min=a[0];

}else{

if(a[i]>max){

max=a[i];

}else if(a[i]<min){

min=a[i];

}

}

}

System.out.println();

System.out.println("min="+min);

System.out.println("max="+max);


int index=-1;

for(int i=0;i<a.length;i++){

if(a[i]==89){

index=i;

}

}

if(index!=-1){

System.out.println("該數的下標位="+index);

}else{

System.out.println("沒有該數咯");

}

int count=0;//能被2整除的數有多少個

for(int i=0;i<a.length;i++){

if(a[i]%2==0){

System.out.print(a[i]+" ");

count++;

}

}

System.out.println("count="+count);

}


}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章