Java基础题

面向对象程序设计期末复习之手写代码

Java编程基础

1.定义一个整型的长度为6的一维数组k[6],并将数组中元素k[i] 值初始化为i。然后,将元素k[3]打印出来。

class test1{
	public static void main(String[] args){
		int[] k = new int [6];
		for(int i = 0; i < 6; i ++){
			k[i] = i;
		}
		System.out.println(k[3);
	} 
}

2.定义一个整型的长度为3 x 4的二维数组k[3][4],并将数组中元素k[i][j] 值初始化为值ixj。然后,将元素k[2][3]打印出来。(可以直接赋值).

class test2{
	public static void main(String[] args){
		int[][] k = new int[3][4];
		for(int i = 0; i < 3; i ++){
			for(int j = 0; j < 4; j ++){
				k[i][j] = i*j;
			}
		} 
		System.out.println(k[2][3]);
	}
}

3.从命令行输入几个字符串,统计并打印出输入字符串的个数、以及各字符串的字符个数。(提示:args.length / args[k].length() ).

class test3{
	public static void main(String[] args){
	    System.out.println("从命令行输入的字符串个数:"+args.length);  //通过args.length可以得到你在CMD运行时的命令长度
		for(int i=0;i<args.length;i++){
			System.out.println("第"+(i+1)+"个字符串的字符数:"+args[i].length());
		}
	}
}

4.从命令行输入一个数字,判断它是奇数还是偶数。(提示:利用%;三元条件或
if/else ;int a=Integer.parseInt(args[0]) //数据输入)

有同学包括我自己三元运算符不熟就会忘
在这里插入图片描述

class test4{
	public static void main(String[] args){
	    //args[0]就是输入参数中的第一个参数字符串,要比较大小,进行四则运算,应该将String字符类型数据转换为Integer整型数据
		int a = Integer.parseInt(args[0]);  //args[0]就是输入参数中的第一个参数字符串
		System.out.println((a%2 == 0) ? "这个数为偶数":	"这个数为奇数");
	}
}

5.从命令行输入两个数字,判断两个数谁大谁小。(提示:读输入参数args[];三元条件或 if/else )

三元运算符的嵌套

class test5{
	public void main(String[] args){
	    int a = Integer.parseInt(args[0]) ,b = Integer.parseInt(args[1]);
        System.out.println((a >= b)?((a == b) ? a +"=" + b : a +">" + b) : a +"<"+b);
	}
}

if/else 写法

class test5{
	public void main(String[] args){
	   int a = Integer.parseInt(args[0]) ,b = Integer.parseInt(args[1]);
	   if(a == b){
			System.out.println(a+" = "+b);
		}else if(a > b){
			System.out.println(a+" > "+b);
		}else{
			System.out.println(a+" < "+b);
		}
	}
}

6.角谷猜想:任何一个正整数n,如果它是偶数则除以2,如果是奇数则乘3加1,这样得到一个新的整数,如此继续进行上述处理,则最后得到的数一定是1。编写应用程序证明:在3~10000之间的所有正整数都符合上述规则。

class test6{
	public static void main(String[] args){
			for(int i = 3; i <= 10000; i ++){
				int n = i;
				while(n != 1){
					if(n%2 == 0){
							n /= 2;
						}else{
							n = n *  3 + 1;
						}
				}
				System.out.println(i + "符合角谷猜想");  //注意这里输出的是检测的i,而不是n,因为只要走到这里n都已经变成1了。
			}
		}
	}

7.编写一个模拟同时掷骰子的程序。要用Math.random()模拟产生两个骰子,将两个结果相加,相加的和等于7的可能性最大,等于2和12的可能性最小。程序模投掷3600次,判断求和的结果是否合理。

class test7{
	public static void main(String[] args){
		int[] res = new int[13];//虽然两数之和只从2-12,但我们取上限值13
		for(int i = 0; i < 3600; i ++){           //模拟投掷3600次
			int r1 = (int)(Math.random()*6 + 1);  //每一次生成一个新的随机数,r1,r2要放在循环里面
			int r2 = (int)(Math.random()*6 + 1);
			int sum = r1 + r2;
			res[sum]++;
		}
		for(int i = 2; i <= 12; i ++){
			System.out.println("和为"+i+"的次数:"+ res[i]);
		}
	}
}

编程中打印图形问题:总会涉及到 1)打印空格 2)打印图形符号 3)打印换行
我们不妨把这三个打印写成函数,在打印不同的图形时,只需改变相应的范围,直接调用会比较方便


	public static void xPri(int n){
	for(int i = 0; i < n; i ++){
		System.out.print("*");
	}
	public static void tPri(int n){
		for(int i = 0; i < n; i ++){
			System.out.print(" ");
		}
	}	
	public static void lPri(int n){
			System.out.println();
	}

8.编程:从键盘读取星号数,采用循环语句打印如下图形。如:从键盘输入10,则星号排列最大数是10。注意图4图5星号数需要为奇数: .

在这里插入图片描述
将空格,字符,换行静态方法放到一个静态内部类中,以供第八题,第九题和第十题均可调用

package com.test;
import java.util.Scanner;
class T1{	
  //8 读取星号数
  //定义一个打印n个星号的方法
  public static class Tx {
  public static void pStar(int n){
   	  for (int i=0; i<n; i++) {
   	   	System.out.print("*");
   	  }
   }
   //定义一个打印n个空格的方法
   public static void pSpace(int n){
   	  for (int i=0; i<n; i++) {
   	   	System.out.print(" ");
   	  }
   }
   //定义一个换行的方法
   public static void pEnter()
   {
   	   	System.out.println();   	
   }
   public static void main(String[] args)
   {
   	 Scanner sc=new Scanner(System.in);
   	 System.out.print("请输入星号数:");
   	 int n=sc.nextInt();
   	  
   	  //图形1
   	  for(int i=1;i<=n;i++)
   	  {
   	     Tx.pSpace(n-i);
   	     Tx.pStar(i);
   	     Tx.pEnter();	
   	  }
   	  
   	   //图形2
   	 for(int i=1;i<=n;i++)
   	  {
   	      Tx.pStar(i);
   	      Tx.pEnter();	
   	  }
   	  for(int i=n-1;i>=1;i--)
   	  {
   	  	Tx.pStar(i);
   	  	Tx.pEnter();
   	  }
   	  //图形3
   	  for(int i=1;i<=n;i++)
   	  {
   	  	Tx.pStar(i);
   	        Tx.pEnter();	
   	  }
   	  for(int i=1;i<n;i++)
   	  {
   	  	Tx.pSpace(i);
   	  	Tx.pStar(n-i);
   	  	Tx.pEnter();
   	  }
   	  //图形4
   	 for(int i=0;i<=(n-1)/2;i++)
   	  {
   	  	Tx.pSpace((n-1)/2-i);
   	  	Tx.pStar(i*2+1);
   	  	Tx.pEnter();
   	  }
   
   	//图形5
   	 for(int i=0;i<=(n-1)/2;i++)
   	  {
   	  	Tx.pSpace((n-1)/2-i);
   	  	Tx.pStar(i*2+1);
   	  	Tx.pEnter();
   	  }
   	  for(int i=1;i<=(n-1)/2;i++)
   	  {
   	  	Tx.pSpace(i);
   	  	Tx.pStar(n-i*2);
   	  	Tx.pEnter();
   	  }
  }
} 

9.编程:从键盘读取一个矩形的长度,然后输出一个空心矩形。

在这里插入图片描述

package com.test;
import com.test.T1.Tx; 
import java.util.Scanner;
class T2{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        Tx.pStar(n);
        Tx.pEnter();
        for(int i=0;i<n-2;i++)
        {
            Tx.pStar(1);
            Tx.pSpace(n-2);
            Tx.pStar(1);
            Tx.pEnter();
        }
        Tx.pStar(n);
    }
}

10.编程:从键盘读取一个矩形外边和内边的长度,然后输出一个空心矩形。

在这里插入图片描述

  //10 题 读取矩形内外边长
package com.test;
import com.test.T1.Tx;
import java.util.Scanner;
class T3{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入外边长:");
        int n=sc.nextInt();
        System.out.print("请输入内边长:");
        int m=sc.nextInt();
        for(int i=0;i<=((n-m)/2);i++)
        {
            Tx.pStar(n);
            Tx.pEnter();
        }
        for(int i=0;i<m;i++)
        {
            Tx.pStar((n-m)/2);
            Tx.pSpace(m);
            Tx.pStar((n-m)/2);
            Tx.pEnter();
        }
        for(int i=0;i<=((n-m)/2);i++)
        {
            Tx.pStar(n);
            Tx.pEnter();
        }
    }
}

11.设计二维数组,输出、处理杨辉三角形,显示10行的杨辉三角形:
在这里插入图片描述
在这里插入图片描述

import java.util.Scanner;
class less02_3
{
   public static void main(String[] args)
   {
       // 第11题 杨辉三角
	   // 思路:第一列和最后一列都是1;从第三行开始每一列等于上一行那列和前列相加。
       int[][] arr = new int[10][10];
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                arr[i][0] = 1;
                arr[i][i] = 1;
            }
        }
        for (int i = 2; i < arr.length; i++) {
            for (int j = 1; j < arr[i].length - 1; j++) {
                arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
            }
        }
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print(arr[i][j] + "\t");
            }
            System.out.println();
        }
     }
  }

12.猜数字游戏:
编写一个猜数字游戏的程序,预先生成一个0-9的随机数,用户键盘录入一个所猜的数字,如果输入的数字和后台预先生成的数字相同,则表示猜对了,这时,程序会打印“恭喜您,答对了!”如果不相同,则比较输入的数字和后台预先生成的数字大小,如果大了,打印“sorry,您猜大了!”如果小了,打印“sorry,您猜小了!”如果一直猜错,则游戏一直继续,直到数字猜对为止。(教材任务2-2)

import java.util.Scanner;
class Test{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int r = (int)(Math.random()*10);            
        while(true){
            System.out.print("请输入您猜测的数:");
            int s = sc.nextInt();
            if(s > r){
                System.out.println("Sorry,您猜大了!");
            }else if(s < r){
                System.out.println("Sorry,您猜小了!");
            }else{
                System.out.println("恭喜您,答对了!");
                break;
            }
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值