首页 > 代码库 > 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基础--关于分支、循环、数组的部分练习题及详解