关于转入软件工程专业后第二次java课上作业的某些体会
今天是第二周的java课。
自从转入了软件工程专业后,在我没有学习c++的基础上,直接开始了学习java的过程。不得不说过程很艰辛。今天下午老师让编写一个随机产生作业的软件。而我的基础差到都不知道如何创建数组。
在尴尬的坐了一下午后,我终于尴尬的回到了宿舍。激动的我又开始气冲冲的写代码,但写了一俩小时也没有什么进展。在借鉴了同学的作业后,明明是一模一样,我的却死活无法运行,显示by zero.
悲伤欲绝的我疯狂的修改代码,却仍然无法解决这个错误。最后才发现我误把一个变量名写成了另一个变量名。真是在编代码的路上绝对不能太慌,不然会出事。
下面贴上代码,仍有些错误。姑且先贴上,有空再加修改。
(课后作业1)
package Test; import java.util.*;
import java.math.*;
public class _15
{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int num = in.nextInt();
int line = in.nextInt();
int []a= new int[num];
int []b=new int[num];
int []c=new int[num];
for(int i=0;i<num;i++){
int x = (int) (Math.random()*99+1);
int y = (int) (Math.random()*99+1);
int sign =(int)(Math.random()*3);
if(sign==1||sign==3){
while(x<y){
x = (int) (Math.random()*99+1);
y = (int) (Math.random()*99+1);
}
}
if(sign==2){
while(x*y>100){
x = (int) (Math.random()*99+1);
y = (int) (Math.random()*99+1);
}
}
if(sign==3){
while(x%y!=0){
x = (int) (Math.random()*99+1);
y = (int) (Math.random()*99+1);
}
}
a[i]=x;b[i]=y;c[i]=sign;boolean pd=true;
if(i!=0){
while(pd){
for(int cha=0;cha<i;cha++){
if(x!=a[i]&&y!=b[i]&&sign!=c[i]){
pd=false;
}
else {x = (int) (Math.random()*100+1);
y = (int) (Math.random()*100+1);
sign =(int)(Math.random()*3);
}
}
}
}
if(sign==0)
{
System.out.print((i+1)+"."+x+"+"+y+"= ");
}
if(sign==1)
{
System.out.print((i+1)+"."+x+"-"+y+"= ");
}
if(sign==2)
{
System.out.print((i+1)+"."+x+"*"+y+"= ");
}
if(sign==3)
{
System.out.print((i+1)+"."+x+"/"+y+"= ");
}
if((i+1)%line==0)
System.out.println();
} }
}
然后发现可以把后面的if语句省略成更为简单的switch语句:
switch(sign){
case 0:System.out.print((i+1)+"."+x+"+"+y+"= ");break;
case 1:System.out.print((i+1)+"."+x+"-"+y+"= ");break;
case 2:System.out.print((i+1)+"."+x+"*"+y+"= ");break;
case 3:System.out.print((i+1)+"."+x+"/"+y+"= ");break;
关于课上一些动手动脑的问题,也做了个小总结:
1.java中对于字符串的比较,可以用"=="或equals()方法。而例题代码中给出的两个字符串变量不同时,自然会传出false结果。
2.对于枚举类型的最基本应用,就是枚举名.内容,可以直接引用枚举中的一个变量。
3.同时也从代码中得知,枚举类型不属于原始数据类型。
4.在枚举类型中,有一个编译器生成的valueOf()方法,可以返回带指定名称的指定枚举类型的枚举常量。
5.同时,编译器还提供了value()方法,用于返回枚举类型中的所有值(作为数组)。
6.原码:最简单的机器数表示法。反码:正数的反码还是等于原码 负数的反码就是他的原码除符号位外,按位取反。 补码:正数的补码等于他的原码 负数的补码等于反码+1。
为了验证java中对于各种数是用哪种码表示的,编写了一个示例程序对java中的数进行了小运算。以下为代码:
package Teste;
public class TESt {
public static void main(String [] args){
int a=128;
int b=-129;
System.out.println("进行位运算的结果为:"+(a&b));
System.out.println("进行或运算的结果为:"+(a|b));
System.out.println("a进行非运算的结果为:"+(~a));
System.out.println("进行异或运算的结果为:"+(a^b));
}
}
通过运行结果与手动运算比较,再加上int型占四个字节,对于int型的存储,第一位表示符号(0为正,1为负),对于负数,用补码储存。正数则是原码储存。
7.关于java中的同名变量的屏蔽原则,用一个示例程序说明吧:
package Teste;
public class TESt {
static int x=1;
public static void main(String [] args){
System.out.println(x);
{
int x=1;
System.out.println(x);
}
}
}
运行结果后,发现第二个输出语句输出的是复合语句中的x的值,也就可以解释所谓同名变量的屏蔽原则,就是以局部变量为准。在本例中就是以大括号中的变量声明与定义为准。
8.关于java中的类型转换,由表可以看出,由占用字节数多的向少的转换不会造成数据丢失,反之则会造成一定的数据丢失。
9.在java中,浮点数的运算结果是不准确的。其中的原因可以这样解释:在计算机的计算中,总是将十进制转换为二进制。而double类型的存储是64个二进制数,也就代表着最低位大概率会出现误差(除非正好是2的n次方)因为要准确表示我们需要的数字需要远远大于64个二进制数。
10.
关于这个问题,会输出结果X+Y=100200
300X+Y= 可以这样解释:第一个输出语句,双引号在前,这样就使得整个输出语句是输出了一个字符串,就不再会进行后面的加法运算。而第二个输出语句就不同了,先进行运算再输出字符串。这告诉我们想输出结果时应该把内容分开写,不能把字符串顶头写。
另外,老师还布置了一个生成和验证验证码的程序,以下附上:
package code;
import java.awt.*;
import javax.swing.*;
public class GetCode {
static String result ="";
static void getnumber1(){
for(int i=0;i<(int)(Math.random()*6+1);i++)
{
int number1=(int)(Math.random()*9);
result+=number1;
}
}
static void getnumber(){
for(int i=0;i<(int)(Math.random()*6+1);i++)
{
//生成一个97~122的INT型的整数
int number =(int)(Math.random()*26+97);
//生成一个0~9的数字
result+=(char)number;
}
}
public static void main(String [] args){
//生成验证码.
int flag=0;
do{
if(result.length()!=6)
{
getnumber();
getnumber1();
}
//显示验证码,并提示用户输入验证码
String input =JOptionPane.showInputDialog(result+"\n请输入验证码:");
if(input.equals(result))
{
JOptionPane.showMessageDialog(null,"验证码输入正确,验证成功!"
,"Results",JOptionPane.PLAIN_MESSAGE);
flag=1;
}
else {
JOptionPane.showMessageDialog(null,"验证码错误,请重新输入!"
,"Results",JOptionPane.PLAIN_MESSAGE); }
}while(flag==0);
} }
但这个代码中仍出现了一些问题,比如无法用if语句保证其输出的字符串长度为6等等,待日后解决。
关于转入软件工程专业后第二次java课上作业的某些体会的更多相关文章
- 转入软工后第一节java课的作业
这个作业,鸽了好久.本来大家都在中秋前发了,我摸摸索索加上各种缓慢的学习,终于是将他做完了. 做完之后,java最基本的输入输出功能都基本学习到了.下面附上代码: import java.util.* ...
- Java 课上的语录
Java 课上的语录 在用系统类库的类的时候啊,你是不是充分的理解这个系统类库的类.比如这个 ArrayList 你是不是知道它里面有这样那样这样那样的函数,能够帮你做各种各样的事情.很重要,你不知道 ...
- 第一次 在Java课上的编程
第一次在java课上的编程(使用参数输入求和): 代码: public class He { public static void main(String[] args) { ...
- java课上测试心得
放暑假之前,建民老师就给我们布置了每一天学习两小时的代码,但是自己的不重视,根本就没有达到这个要求,简单学了一点点基本的东西,然后在开学的第一堂课上,连续三个小时的敲代码,让我意识到了自己的问题,一个 ...
- 第一章-第五题(你所在的学校有计算机科学专业和软件工程专业么?相关专业的教学计划和毕业出路有什么不同?阅读有关软件工程和计算机科学的区别的文章,谈谈你的看法。)--By 侯伟婷
我所在的本科学校和研究生学校都有计算机科学专业和软件工程专业.具体的教学计划无从得到,所以此情况无从对比,但是我从本科教务处网站找到了计算机科学专业和软件工程专业有关专业方面的课程,现列表如下. 表格 ...
- 软件工程—WC功能实现 (JAVA)
软件工程-WC功能实现(JAVA) Github项目地址:https://github.com/Ousyoung/wc 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和 ...
- 转专业后对于C语言补修的一些体会(1)
在转入软件工程后,原来的C语言程序设计只有三学分,而信息学院的C语言程序设计有四学分.迫于无奈的我只能再补修一遍C语言,自我认为大一对于C语言的学习已经基本足够,但我发现信息学院用的是不一样的书后,对 ...
- (第二章)Java并发机制的底层实现原理
一.概述 Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. ...
- 201521123110第二周Java学习总结
1.本章学习总结 本周的Java学习相对前一周更进了一步,初步学习了Java简单的输入和输出,String类的对象创建后不能修改,它是不可变的,在Java中浮点型默认是double型与C中的int型不 ...
随机推荐
- Linux - Shell - find - 进阶: 时间与大小
概述 继续 find 这次的内容, 参数稍微要 复杂那么一丢丢 背景 刚学会了 基础 的参数 现在来了解一些 时间 和 空间 的参数 一说到操控时间空间, 感觉立马起来了... 准备 OS cento ...
- 【PAT甲级】1114 Family Property (25分)(并查集)
题意: 输入一个正整数N(<=10000),接着输入N行每行包括一个人的ID和他双亲的ID以及他的孩子数量和孩子们的ID(四位整数包含前导零),还有他所拥有的房产数量和房产面积.输出一共有多少个 ...
- 手机chrome书签文件导出教程
重大发现!!!本人亲自测试可以导出chrome书签文件登录下面的链接https://takeout.google.com/settings/takeout/custom/chrome?pli=1
- CentOS 7 使用笔记
一.下载.解压或安装等命令: 目前自己用过的三个下载及安装命令:curl.wget.yum. yum用法: $ sudo yum install libpng16-1.6.29-alt1.i586.r ...
- python 递归调用 返回值问题
当使用递归时并有返回值时,调用自身函数时需要加上return语句如下: def daxiao(biao1,biao2): #判断两个列表的大小,根据里面的元素大小 #如果biao1大于 ...
- Python单元测试unittest与HTMLTestRunner报告生成
本文为简单介绍,使用python自带模块unittest来进行单元测试 首先我们有一个需要测试的类,employee.py 定义了涨薪的方法.我们需要测试这个类的功能是否正确. class Empl ...
- GCC的编译过程和链接
GCC编译过程 一个C/C++文件要经过预处理(preprocessing).编译(compilation).汇编(assembly).和连接(linking)才能变成可执行文件. gcc的常用选项 ...
- 8.10-Day2T1最小值
题目大意 裴蜀定理 题解 很简单... 我这个蒟蒻都猜的出来... 就求所有数的最大公约数 但注意 要加绝对值 因为gcd里面不能传负数 #include<cstdio> #inc ...
- AcWing 846. 树的重心
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> ...
- 无源汇有上下界可行流(ZQU 1590)
无源汇有上下界可行流(也就是循环流) 模型:一个网络,求出一个流,使得每条边的流量必须>=Li且<=Hi, 每个点必须满足总流入量=总流出量(流量守恒)(这个流的特点是循环往复,无始无终) ...