面向对象程序设计期末复习之手写代码
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;
}
}
}
}