国庆随笔

反码、补码跟原码的概念:

原码就是早期用来表示数字的一种方式: 一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码。

正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反。

正数的补码与原码相同,负数的补码为 其原码除符号位外所有位取反(得到反码了),然后最低位加1。

运行TestDouble.java之后,发现小数位后十几位后还有数,导致失真,Java中的简单浮点数类型float和double不能够进行运算,因为大多数情况下是正常的,但是偶尔会出现如上所示的问题。这个问题其实不是JAVA的bug,因为计算机本身是二进制的,而浮点数实际上只是个近似值,所以从二进制转化为十进制浮点数时,精度容易丢失,导致精度下降。

int X=100;

int Y=200;

System.out.println("X+Y="+X+Y);

System.out.println(X+Y+"=X+Y");这个结果为x+y=100200和300=x+y。

像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 “软件”。

package saedf;
import java.util.*;
public class kkl {
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int math1=0;
int math2=0;
int sum;
double sum1;
int i;
int m;
double k;
int success=0;
int failure=0;
for(i=0;i<30;i++)
{
int intVal1 = (int)(Math.random() * 200 + 0);
math1=intVal1;
int intVal2=(int)(Math.random()*200+0);
math2=intVal2;
if(i%4==0)
{
sum=math1+math2;
System.out.println("加法:"+math1+"+"+math2+"=");
m=in.nextInt();
if(m==sum)
{
System.out.println("正确,请做下一道题");
success++;
}
else
{
System.out.println("回答错误,请做下一道题");
failure++;
}
}
if(i%4==1)
{
sum=math1-math2;
System.out.println("减法:"+math1+"-"+math2+"=");
m=in.nextInt();
if(m==sum)
{
System.out.println("正确,请做下一道题");
success++;
}
else
{
System.out.println("回答错误,请做下一道题");
failure++;
}
}
if(i%4==2)
{
sum=math1*math2;
System.out.println("乘法:"+math1+"×"+math2+"=");
m=in.nextInt();
if(m==sum)
{
System.out.println("正确,请做下一道题");
success++;
}
else
{
System.out.println("回答错误,请做下一道题");
failure++;
}
}
if(i%4==3)
{
sum1=math1/math2;
System.out.println("除法:"+math1+"÷"+math2+"≈");
k=in.nextDouble();
if(k>sum1-0.5&&k<sum1+0.5)
{
System.out.println("正确,请做下一道题");
success++;
}
else
{
System.out.println("回答错误,请做下一道题");
failure++;
}
}
}
System.out.println("总共完成30道题,回答正确"+success+"道,"+"回答错误"+failure+"道。");
}
}

验证码登录界面:

package saedf;

public class code {
public static void main(String[] args)
{
String code1="";
int code2=0;
for(int i=0;i<4;i++)
{
int value=(int)(Math.random()*2+0);
if(value==0)
{
code1="";
int value1 = (int)(Math.random() * 26 + 97);
code1 =code1+(char)value1;
System.out.println(code1);
}
else
{
int value2=(int)(Math.random()*10+0);
code2=value2;
System.out.println(code2);
}
}
System.out.println();
}
}

没有登录界面,只有验证码。

posted @ 2018-10-07 17:32  Double晨  阅读(110)  评论(0编辑  收藏  举报