java动脑公开课_java课堂动手动脑
实验任务一:阅读并运行示例PassArray.java.
1)源代码:
package demo;
//PassArray.java
//Passing arrays and individual array elements to methods
public class PassArray {
public static void main(String[] args) {
int a[] = { 1, 2, 3, 4, 5 };
String output = "The values of the original array are:\n";
for (int i = 0; i < a.length; i++)
output += " " + a[i];
output += "\n\nEffects of passing array " + "element call-by-value:\n"
+ "a[3] before modifyElement: " + a[3];
modifyElement(a[3]);
output += "\na[3] after modifyElement: " + a[3];
output += "\n Effects of passing entire array by reference";
modifyArray(a); // array a passed call-by-reference
output += "\n\nThe values of the modified array are:\n";
for (int i = 0; i < a.length; i++)
output += " " + a[i];
System.out.println(output);
}
public static void modifyArray(int b[]) {
for (int j = 0; j < b.length; j++)
b[j] *= 2;
}
public static void modifyElement(int e) {
e *= 2;
}
}
2)程序截图:
使用引用传递时,方法中更改了数组元素的值,直接修改了原始的数组元素。 使用值传递时,方法体中修改的仅是原始数组元素的一个拷贝。
实验任务二:阅读QiPan.java示例程序了解如何利用二维数组和循环语句绘制五子棋盘。
源代码:
package demo;
import java.io.*;
public class QiPan
{
//定义一个二维数组来充当棋盘
private String[][] board;
//定义棋盘的大小
private static int BOARD_SIZE = 15;
public void initBoard()
{
//初始化棋盘数组
board = new String[BOARD_SIZE][BOARD_SIZE];
//把每个元素赋为"╋",用于在控制台输出棋盘
for (int i = 0 ; i < BOARD_SIZE ; i++)
{
for ( int j = 0 ; j < BOARD_SIZE ; j++)
{
board[i][j] = "╋";
}
}
}
//在控制台输出棋盘的方法
public void printBoard()
{
//打印每个数组元素
for (int i = 0 ; i < BOARD_SIZE ; i++)
{
for ( int j = 0 ; j < BOARD_SIZE ; j++)
{
//打印数组元素后不换行
System.out.print(board[i][j]);
}
//每打印完一行数组元素后输出一个换行符
System.out.print("\n");
}
}
public static void main(String[] args)throws Exception
{
QiPan gb = new QiPan();
gb.initBoard();
gb.printBoard();
//这是用于获取键盘输入的方法
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputStr = null;
System.out.println("请输入您下棋的座标,应以x,y的格式:");
//br.readLine():每当在键盘上输入一行内容按回车,刚输入的内容将被br读取到。
while ((inputStr = br.readLine()) != null)
{
//将用户输入的字符串以逗号(,)作为分隔符,分隔成2个字符串
String[] posStrArr = inputStr.split(",");
//将2个字符串转换成用户下棋的座标
int xPos = Integer.parseInt(posStrArr[0]);
int yPos = Integer.parseInt(posStrArr[1]);
//把对应的数组元素赋为"●"。
gb.board[xPos - 1][yPos - 1] = "●";
/*
电脑随机生成2个整数,作为电脑下棋的座标,赋给board数组。
还涉及
1.座标的有效性,只能是数字,不能超出棋盘范围
2.如果下的棋的点,不能重复下棋。
3.每次下棋后,需要扫描谁赢了
*/
gb.printBoard();
System.out.println("请输入您下棋的座标,应以x,y的格式:");
}
}
}
1)实验结果截图:
实验任务三:请编写一个程序将一个整数转换为汉字读法字符串。比如“1123”转换为“一千一百二十三”。 更进一步,能否将数字表示的金额改为“汉字表达? 比如将“¥123.52”转换为“壹佰贰拾叁元伍角贰分”。
1)程序设计思想:
2)源代码:
package demo;
import java.util.Scanner;
public class ZhuanHuan {
private String[] a={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private String[] b={"十","百","千","万","十万 ","百万"};
private String[] c={"元","角","分"};
private String Change(String str)
{
String result="";
int numLen=str.length();
for(int i=0;i
{
int num=str.charAt(i)-48;
if(i!=numLen-1&&num!=0)
{
result+=a[num]+b[numLen-2-i];
}
else
{
if(result.length()>0&&a[num].equals("零")&&result.charAt(result.length()-1)=='零')
continue;
result+=a[num];
}
}
if(result.length()==1)
return result;
int index=result.length()-1;
while(result.charAt(index)=='零')
{
index--;
}
if(index!=result.length()-1)
return result.substring(0,index+1);
else {
return result;
}
}
public static void main(String args[])
{
ZhuanHuan nr=new ZhuanHuan();
Scanner in=new Scanner(System.in);
System.out.print("输入整数:");
String x=in.next();
System.out.print("转换后为:"+nr.Change(x));
}
}
进一步,金额的源代码:
package demo;
import java.util.Scanner;
public class ZhuanHuan {
private String[] a={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private String[] b={"十","百","千","万"};
private String[] c={"元","角","分"};
private String Change(String str)
{
String result="";
int p=0;
int numLen=str.length();
for(int i=0;i
{
if(str.charAt(i)=='.')
{
p=i;
break;
}
}
for(int i=0;i
int num=str.charAt(i)-48;
if(i!=p-1&&num!=0)
{
result+=a[num]+b[p-2-i];
}
else
{
if(result.length()>0&&a[num].equals("零")&&result.charAt(result.length()-1)=='零')
continue;
result+=a[num];
}
}
result+=c[0];
for(int i=p+1;i
{
int num1=str.charAt(i)-48;
if(num1!=0)
{
result+=a[num1]+c[numLen-p-2];
}
else
result+=a[num1];
p--;
}
int index=result.length()-1;
while(result.charAt(index)=='零')
{
index--;
}
if(index!=result.length()-1)
return result.substring(0,index+1);
else {
return result;
}
}
public static void main(String args[])
{
ZhuanHuan nr=new ZhuanHuan();
Scanner in=new Scanner(System.in);
System.out.print("输入金额:");
String x=in.next();
System.out.print("转换后为:"+nr.Change(x));
}
}
4)实验结果截图:
实验任务四:大数
(1) 源代码:
package demo;
import java.util.Scanner;
public class BigNum{
public static int[]add(int []a,int []b){
int wei=0;
int[]c=new int[a.length];
for(int i=a.length-1;i>=0;i--)
{
c[i]=a[i]+b[i]+wei;
if(c[i]<10)
wei=0;
else
{
c[i]=c[i]-10;
wei=1;
}
}
return c;
}
public static int []sub(int []a,int[]b,int w)
{
int wei=0;
int[]c=new int[a.length];
for(int i=a.length-1;i>=0;i--)
{
if(w<=0)
{
c[i]=b[i]-a[i]-wei;
if(c[i]>=0)
{ wei=0;}
else
{
c[i]=c[i]+10;
wei=1;
}
}
else
{
c[i]=a[i]-b[i]-wei;
if(c[i]>=0)
{wei=0;}
else
{
c[i]=c[i]+10;
wei=1;
}
}
}
return c;
}
public static void main(String[]args){
int a[]=new int[100];
int b[]=new int[100];
int m=0;
int n=0;
int s=0;
int t=0;int u=0;
Scanner in=new Scanner(System.in);
System.out.println("请输入第一个数:");
String aa=in.next();
System.out.println("请输入第二个数:");
String bb=in.next();
m=a.length-aa.length();
n=b.length-bb.length();
if(aa.length()>bb.length())
{
u=1;
}
else if (aa.length()
{
u=-1;
}
else
{u = aa.compareTo(bb);}
for (int i = 0; i < aa.length(); i++)
{
a[m++] = aa.charAt(i) - 48;
}
for (int j = 0; j < bb.length(); j++)
{
b[n++] = bb.charAt(j) - 48;
}
int[] c = BigNum.add(a, b);
for (int k = 0; k < c.length; k++)
{
if (c[k] > 0)
{
s = k;
break;
}
}
System.out.print("相加的结果为:");
for (int i = s; i < c.length; i++) {
System.out.print(c[i]);
}
System.out.println();
int[] d = BigNum.sub(a, b, u);
for (int k = 0; k < d.length; k++)
{
if (d[k] > 0)
{
t = k;
break;
}
}
System.out.print("相减的结果为:");
if (u < 0)
System.out.print("-");
for (int i = t; i < d.length; i++)
{
System.out.print(d[i]);
}
System.out.println();
System.out.println();
System.out.println();
System.out.println();
}
}
(2) 程序截图
实验任务五:随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中。
(1) 程序设计思路:先定义一个数组,用random算法产生随机数,利用for循环将随机数导入数组中,遍历计算数组元素的和,然后输出即可。
(2) 源代码:
package demo;
import javax.swing.JOptionPane;
public class ArrayAdd {
public static void main(String args[]){
int []a=new int[10];
int sum=0;
String str="10个随机数为:"+"\n";
for(int i=0;i
{
int m=(int)(Math.random()*100);
a[i]=m;
str+=a[i]+"\n";
sum+=a[i];
}
str+="随机数的和为:"+sum;
JOptionPane.showMessageDialog(null,str,"结果",JOptionPane.INFORMATION_MESSAGE);
}
}
程序截图:
(5)编程总结:学会了利用循环将随机数赋给数组,然后计算数组元素的和,遍历并输出,把问题从大化小,由繁化简,逐步分析,完成项目。
java动脑公开课_java课堂动手动脑相关推荐
- 计算机公开课课前互动小游戏,公开课前课堂小游戏
引导语:一年级拼音教学小游戏玩是孩子的天性,游戏自然就会成为一年级拼音教学的常客!下面是yjbys小编收集了一些关于公开课前拼音课堂小游戏,希望对你有帮助. 篇一:公开课前课堂小游戏 适用范围: 用于 ...
- java part.inlimen_java字符串加密及动手动脑
字串加密: 请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想.程序流程图.源代码.结果截图. 设计思想:先输入一个字符串,调用toCharArray()函数将它转化为字符数组,在利 ...
- java跑动d小人_Java课堂练习5
针对String作为一个基本类型来使用: 1.如果String作为一个基本类型来使用,那么我们视此String对象是String缓冲池所拥有的. 2.如果String作为一个基本类型来使用,并且此时S ...
- java课程课后作业04之动手动脑
1.继承条件下的构造方法调用 先贴出实验需要的代码: 1 package TestJava; 2 3 class Grandparent 4 { 5 public Grandparent() 6 { ...
- java swing列表数据加监听,【Java Swing公开课|Java监听列表项选择事件怎么用,看完这篇文章你一定就会了】- 环球网校...
[摘要]作为一门面向对象编程语言,Java吸收了C++语言的优点,也展现了其强大的一面,我们能在各个地方看到其功能强大和简单易用的两个特征,当然,也吸引了很多程序员的注意力,所以就有人想了解Java的 ...
- java监听焦点事件_【Java Swing公开课|Java Swing焦点事件监听器怎么用,看完这篇文章你一定就会了】- 环球网校...
[摘要]作为一门面向对象编程语言,Java吸收了C++语言的优点,也展现了其强大的一面,我们能在各个地方看到其功能强大和简单易用的两个特征,当然,也吸引了很多程序员的注意力,所以就有人想了解Java的 ...
- java语言学术报告厅,文理学院举办java编程语言公开课
为了拓宽学生视野,增强学生科技创新意识,引导学生进行职业生涯规划,9月12日19:30,文理学院学生会邀请恒智IT云计算的贾旺老师在学术报告厅举办了一场"关于Java编程语言发展前景及应用& ...
- 接口_公开课_课堂笔记
一.什么是接口? 接口指的是实体或者软件提供给外界的一种服务 二.为什么需要接口? 因为接口能够使用我们的实体,软件的内部数据能够被外部修改. 硬件接口:USB接口:传输数据. 软件接口:API(ap ...
- java窗口弹出的位置_java的窗口弹出和动手动脑
窗口弹出 //两数相加窗口弹出 张雪晴 2015/10/3 import javax.swing.JOptionPane; public class Addition { public static ...
最新文章
- java 获取utc,如何在Java 8中获取UTC + 0日期?
- 我的Android进阶之旅------Android项目目录结构分析
- 概述:机器学习和大数据技术在信贷风控场景中的应用
- Zjoi2010排列计数Perm
- CentOS中使用Docker+nginx部署Vue打包的dist项目
- python return返回值在计算机内的存储形式_Python如何执行存储过程,获取存储过程返回值...
- 正则表达式不包含某个字符串_JMeter必知必会系列(18) JMeter正则表达式提取器疑难分析...
- P2597 [ZJOI2012]灾难(top+lca)
- 课时77.序选择器(掌握)
- (68)zabbix windows性能计数器使用详解
- Android 10 发布
- 一个阿拉伯数字转中文数字的函数
- 【ExtJs】获取grid选中的records
- 压缩与解压缩 与多个安装文件的合并问题
- debian 修改apache2 https 端口为11443
- 使用nsenter进入Docker容器
- Rocket - tilelink - AtomicAutomata
- 物流企业matlab效率,基于DEA原理的物流企业综合效率评价
- acer switch 10 linux,acer switch 10好不好
- JAVA--计算长方体、四棱锥的表面积和体积
热门文章
- ARC079F - Namori Grundy(构造,基环树)
- P4592 [TJOI2018]异或
- P4716-[模板]最小树形图
- bzoj#2407-探险【最短路,二进制分组】
- 牛客练习赛79E-小G的数学难题【dp,单调队列】
- CF401C-Team【构造】
- jzoj4235-序列【斐波那契数列】
- jzoj4272-序章-弗兰德的秘密【树形dp】
- [CF850F] Rainbow Balls
- AtCoder Grand Contest 021 D - Reversed LCS(区间dp)