首页 > 代码库 > Java基础--关于分支、循环、数组的部分练习题及详解

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);

}


}


本文出自 “我是宁采臣” 博客,谢绝转载!

Java基础--关于分支、循环、数组的部分练习题及详解