顺序结构是代码从主函数开始从上到下执行。
if语句的基本格式为这样:
if()
{
}else
{
}
它的执行过程是,如果if表达式里面的结果为true,那么执行下面那个大括号的语句。如果if表达式的结果为假,那么执行else语句。
例如:
int a = 1;
if(a == 1)
{
System.out.prntln("为真");
}else
{
System.out.prntln("为假");
}
我们令a=1,if语句的条件是a=1是否为真,所以if条件是真的,我们执行下面大括号的代码,运行结果为:为真
if 语句还可以写为单 if形式:
if()
{
}
如果if中条件为真,那么执行大括号里面的代码,如果if语句为假,那么忽略本条代码。
if语句还有一种形式为if语句的嵌套:
if ()
{
if ()
{
}
else
{
}
}
这种形式是如果if条件为真,那么执行括号里面的if,如果里面的if为真,那么执行下面的语句,如果里面的if为假,那么执行下面的else语句。
if语句还有if -if else - else形式,具体代码如下:
if()
{
}
else if ()
{
}
else
{
}
它的执行过程是这样的,如果if表达式为真,则执行下面括号里面的代码,如果所有if语句的表达式都为假,那么他会执行最后一个else的代码。
switch语句用法和if语句基本相同,在选择比较多的时候使用。
它的形式如下:
switch(变量){
case 值1:
执行语句1;
break;
case 值2:
执行语句2;
break;
case 值3:
执行语句3;
break;
default:
执行语句;
break;
}
switch的变量支持整数和字符以及字符串 ,但是不支持长整型。
它的执行情况是这样的:如果变量的值为下面哪一个的数值,那么就会执行哪个值后面对应的语句,如果都不满足的时候就会执行最后一个default后面的语句。
在使用switch语句的时候,如果不需要执行完这个case后继续执行下去,那么一定要在执行语句后面加一个break;来终止switch语句的执行。
循环的存在是为了把一些复杂的运算交给计算机,简化代码,也减少了代码长度。
我们常用的循环有for循环 while循环 do-while循环 、
for循环是这样的:for(初始条件;循环条件;每次循环执行的条件)
for循环中间的两个相隔的均为分号,不是逗号。
for循环的具体结构如下:
for(int a = 0;a<5;a++)
{
System.out.println(a);
}
我们的运行过程为:开始定义一个变量a等于0,过如果a<5时执行下面的语句,每次执行完毕后执行a++语句。
那么我们的运行结果为:0 1 2 3 4
for循环也可以初始化多个变量,每次执行完毕后执行多个语句,例如这样:
for (int i = 0,int j = 0;i<5;i++,j++)
{
System.out.println(i+" " +j);
}
这样写就初始化了两个变量 i 和 j,每次循环执行的语句是i++和j++。
那么运行结果是这样的:0 0 1 1 2 2 3 3 4 4
for循环怎么写一个无限循环的代码呢?我们可以通过这样:
for(;;)
{
System.out.println("无限循环");
}
这样可以发现我们系统中会无限制地输出这四个字。
for循环可以没有初始条件,也可以没有循环条件,也可以没有循环内容。
for 循环在Java中应用十分广泛,也十分有趣。
例如,我们需要打印这个图案:
我们需要一个嵌套循环,第一个循环控制行数,第二个循环控制每一行的内容,我们可以让用户输入一个数字,为打印的行数,然后我们进行打印。里面有三个循环,第一个循环控制左边的空格数量,第二个循环控制左边的数字,第三个循环控制右边的数字。例如:
import java.util.*;
public class ti314 {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
int n = in.nextInt();
for (int i = 1 ;i<=n;i++)
{
for (int j = n-i;j>0;j--)
{
System.out.print(" ");
}
for (int k = i ;k>=1;k--)
{
System.out.printf("%d ",k);
}
for (int h = 2;h<=i;h++)
{
System.out.printf("%d ",h);
}
System.out.println();
}
}
}
这样我们的程序就实现了。那如果我们需要打印这样一个图案呢?
和上面的代码一样,先控制行数,再打印每一行的内容,需要一个嵌套的循环。我们的代码可以这样写:
public class ti31501 {
public static void main(String[] args) {
for(int i = 5 ;i>=0;i--)
{
for (int j = 1;j<=6-i;j++)
{
System.out.print(j);
}
System.out.println();
}
}
}
如果我们需要打印这样的图案呢?
这个图案和上一个的区别是前面多了一个空格的打印,我们需要增加一个循环来控制里面的空格多少。
public class ti31504 {
public static void main(String[] args) {
for (int i =0;i<6;i++)
{
for (int k = 1;k
while循环分为两种,一种是 do{事情}while(条件),这种循环的特点是循环至少执行一次,另一种循环是while(条件){事情},这种循环的特点是如果不满足条件可能进不去循环。在使用中我们可以根据自己的需要来选择哪种循环。
while循环在任何条件下和for循环都是可以互换的。
while-do循环样例:
int i = 0 ;
int sum = 0;
while (i != 5)
{
i++;
sum += i ;
}
System.out.println(sum);
程序是这样执行的:开始判断i不等于5,进入循环,每次i自增1,然后与sum相加,当i等于4的时候,与sum相加,下一轮循环i变为了5,继续与sum相加,下一次循环条件不满足,结束循环。这就是一个从1到5的和。最后输出结果。
do-while循环样例:
int i = 0 ;
int sum = 1;
do{
i++;
}while(sum==0)
System.out.println(i);
这个情况就显而易见了,通过我们的输出结果可以看到,do-while循环他不管循环条件是什么,他都至少循环一次,开始sum的值不满足循环条件,但是通过结果看到i的值变成了1,说明循环执行了一次。
while循环中循环条件是一个条件表达式,他返回的结果一定是一个真或者假,所以我们在循环中也可以这样写:
while(true)
{
System.out.println("无限循环");
}
通过结果我们可以发现这个是一个无限循环的代码。因为循环条件是循环执行的条件true。
1.
这个题我们需要先让用户输入abc的数值,因为输入和计算结果均有小数,所以我们定义它们采用double类型,输入后,我们先潘敦啊他们的b^2-4ac是否大于或者等于或者小于0,如果小于零直接输出没有实数根,如果等于零,我们输出他的一个实数根,如果大于零,我们输出他的两个实数根。
import java.util.Scanner;
public class ti31 {
public static void main(String[] args) {
System.out.println("Enter a,b,c");//提示用户输入
double a,b,c;//定义
Scanner in = new Scanner(System.in);
a = in.nextDouble();//读取数据
b = in.nextDouble();
c = in.nextDouble();
double d = b*b-4*a*c;//计算看有几个实数根
double e = -b+Math.pow(d, 0.5);
double f = -b-Math.pow(d, 0.5);
if (d<0) //判断
System.out.println("No real roots");
if (d==0)
System.out.println("have one root:"+e/2*a);
if (d>0)System.out.println("have two root:"+e/2*a+" and "+f/2*a);
}
}
这个题和上面的题目基本一致,先提示用户输入,然后计算是否有解,套入题中的数字,如果没有解,直接输出没有解,如果有的话,套入题中的公式计算,最后输出。因为读入和输出的均为小数,所以我们需要用double来定义他们。
import java.util.Scanner;
public class ti32 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Enter a,b,c,d,e,f");//提示用户输入
double a,b,c,d,e,f;//定义
Scanner in = new Scanner(System.in);
a = in.nextDouble();//读取所有数据
b = in.nextDouble();
c = in.nextDouble();
d = in.nextDouble();
e = in.nextDouble();
f = in.nextDouble();
if (a*d-b*c == 0)//判断是否有解
{
System.out.println("方程式无解");
}
//如果有解输出
else
{
double q = a * d - b * c;
double x = (e * d - b * f)/q;
double y = (a*f-e*c)/q;
System.out.println("x = "+x+" y = "+y);
}
}
}
这个题我们首先让用户输入一个数字代表今天星期几,然后再让用户输入一个数字,代表几天后,然后还需要一个变量为几天后的星期。我们用用户输入的数字加上当前日期然后对7取余货的当前的日期。然后定义两个字符串,把每一个数字代表的星期加入,最后输出结果。
import java.util.Scanner;
public class ti33 {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
System.out.print("今天是周几?0为周日...");//提示用户输入
int today = in.nextInt();
System.out.print("输入未来几天?");//提示用户输入
int future = in.nextInt();
int futureday = (today+future)%7;//获取未来几天的星期
String todaystr = "";//定义今天的星期,将数字转换为星期
if (today == 0 ) todaystr = "周日";
else if (today == 1)todaystr = "周一";
else if (today == 2)todaystr = "周二";
else if (today == 3)todaystr = "周三";
else if (today == 4)todaystr = "周四";
else if (today == 5)todaystr = "周五";
else if (today == 6) todaystr = "周六";
String futerstr = "";//定义未来的星期,将数字转换为星期
if (futureday == 0 ) futerstr = "周日";
else if (futureday == 1)futerstr = "周一";
else if (futureday == 2)futerstr = "周二";
else if (futureday == 3)futerstr = "周三";
else if (futureday == 4)futerstr = "周四";
else if (futureday == 5)futerstr = "周五";
else if (futureday == 6)futerstr = "周六";
//系统输出结果
System.out.print("今天是"+todaystr+" "+future+"天后是"+futureday);
}
}
这个题因为题目中说是一个三位数,看他是不是回文数字,我们先提示用户输入,然后读取一个数字,我们只需要看这个数字的第一位和第三位是否相等即可,我们将读取的数字取余,比如999得到9,然后除以10,得到99,再除以10得到9,我们只需要知道第一个9和最后一个9是否相等就可以知道是不是回文数字。
import java.util.Scanner;
public class ti34 {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
System.out.println("输入三位数字");//提示用户输入
int a,b,c,num,k;//定义变量
k = in.nextInt();//读取数字
num = k;//将数字备份
a = num%10;//取余
num/=10;//除以10
b = num%10;//
num/=10;//
c = num%10;//取余
if (a==c)//看是否相等
System.out.println(k+"是回文数字");//输出结果
else System.out.println(k+"不是回文数字");
}
}
这个题目首先系统生成一个随机两位数,然后提示用户输入,然后将用户输入和系统生成的数字进行比对。由于考虑到彩票第一位数字可能是0,所以生成10以内的数字的时候,我们需要将这个数字第一位当作0。最后输出结果。
import java.util.Scanner;
public class ti35 {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
int num=(int)(Math.random()*100);//取一个随机数
System.out.println("输入两位数字");//提示用户输入
int c;
int k = 0;
c = in.nextInt();//用户输入的数字
int e,f;
if (c<0) //如果是10以内的第一位是0
{
e = 0;
f = c;
}
else
{
f = c%10;
c/=10;
e = c;
}//进行第一位和第二位数字的赋值
int a,b;
if (num<10)
{
a = 0;
b = num;
}
else
{
b = num%10;
num/=10;
a = num;
}
if (a==e&&b==f)
System.out.println("10000");//一等奖
else if (a == f &&b==e)
System.out.println("3000");//二等奖
else if (a==e||a==f||b==e||b==f)
System.out.println("1000");//三等奖
else
System.out.println("没中奖");
}
}
这个题首先系统随机产生一个0-2的随机数,分别代表石头剪刀布,我们提示用户输入,用户输入之后,我们进行判断,采用if嵌套的形式,比较麻烦,但是简单,输出结果。
import java.util.*;
public class ti36 {
public static void main(String[] args) {
Random random=new Random();//定义随机数对象
int a = random.nextInt(3);//产生2以内的随机数
Scanner in = new Scanner (System.in);
System.out.println("输入0/1/2分别代表石头剪刀布");//提示用户输入
int b = in.nextInt();//读取数据
if (a==0)
//判断哪个人赢了
{
if (b==0)
System.out.println("我是石头你是石头平了");
if (b==1)
System.out.println("我是石头你是剪刀你输了");
if (b==2)
System.out.println("我是石头你是布你赢了");
}
if (a==1)
{
if (b==0)
System.out.println("我是剪刀你是石头你赢了");
if (b==1)
System.out.println("我是剪刀你是剪刀平了");
if (b==2)
System.out.println("我是剪刀你是布你输了");
}
if (a==2)
{
if (b==0)
System.out.println("我是布你是石头你输了");
if (b==1)
System.out.println("我是布你是剪刀你赢了");
if (b==2)
System.out.println("我是布你是布平了");
}
}
}
这个题很简单,先提示用户输入,如果用户输入的月份是1,那么把用户输入的年份减一,月份变为13,如果用户输入的月份是2,那么年份减1,月份变为14,然后带入题目中的公式,就是最后的结果。
import java.util.*;
public class ti37 {
public static void main(String[] args) {
int h;
System.out.print("输入年 月 该月第几天");//提示用户输入
Scanner in = new Scanner (System.in);
int year = in.nextInt();//定义数据
int m = in.nextInt();
int q = in.nextInt();
if (m == 1) //特殊情况,年份减1,月份边=变13
{
year--;
m = 13;
}
if (m == 2) //特殊情况,年份减1,月份边=变14
{
year--;
m = 14;
}
int j = year/100;
int k = year%100;
h = (q+26*(m+1)/10+k+k/4+j/4+5*j)%7;//代入公式
if (h==0)System.out.println("周六");//将数字变为星期几
else if (h==1)System.out.println("周天");
else if (h==2)System.out.println("周一");
else if (h==3)System.out.println("周二");
else if (h==4)System.out.println("周三");
else if (h==5)System.out.println("周四");
else System.out.println("周五");
}
}
这个题先提示用户输入,在读取数字,采用double定义,然后计算和圆心的距离,利用图中的公式,需要用到math.pow函数。最后计算出和圆心的距离,和半径进行比较即可。
import java.util.*;
public class ti38 {
public static void main (String [] args) {
Scanner in = new Scanner (System.in);
System.out.println("输入坐标点");//提示用户输入
double x = in.nextDouble();//读取坐标
double y = in.nextDouble();
double xo = 0;//定义圆心
double yo = 0;
double radius = 10;//定义半径
//计算距离
double distance =Math.sqrt( Math.pow(x-xo, 2)+Math.pow(y-yo, 2));
if (distance == radius) //距离相等
System.out.println("在圆上");
else if (distance > radius) //在圆外
System.out.println("在圆外");
else //在圆内
System.out.println("在圆内");
}
}
9.
这道题是一个简单的线性规划题,需要判断点是不是在三角形内,我们已知三角形的边长,即可求出斜边的方程式,然后输入点,判断这个点所对应的x值对应的y值是否小于该点的y值,如果小于,则在三角形内,如果大于,则在三角形外。在这之前可以先进性粗略地判断,看x或者y是否越界。
import java.util.Scanner;
class Demo03_09{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//提示用户输入一个点的坐标
System.out.print("请输入一个坐标:");
double x=scanner.nextDouble();
double y=scanner.nextDouble();
//大致判断一下坐标的范围
//再精确的判断坐标的范围
if(x>=0&&x<=200&&y<=-0.5*x+100){
System.out.println("点再三角形内");
}else{
System.out.println("点再三角形外");
}
}
}
这道题首先判断小正方形在大正方形内和在打正方形外的临界值,然后判断和临界值的大小情况,其余的为和打正方形相交。
double y1=scanner.nextDouble();
double w1=scanner.nextDouble();
double h1=scanner.nextDouble();
//2.再输入小矩形的中心,宽和高
System.out.print("请输入第2个矩形的信息:");
double x2=scanner.nextDouble();
double y2=scanner.nextDouble();
double w2=scanner.nextDouble();
double h2=scanner.nextDouble();
double inXMin=x1-(w1-w2)/2;
double inXMax=x1+(w1-w2)/2;
double inYMin=y1-(h1-h2)/2;
double inYMax=y1+(h1-h2)/2;
double outXMin=x1-(w1+w2)/2;
double outXMax=x1+(w1+w2)/2;
double outYMin=y1-(h1+h2)/2;
double outYMax=y1+(h1+h2)/2;
if(x2>=inXMin&&x2<=inXMax&&y2>=inYMin&&y2<=inYMax){
System.out.println("小矩形在大矩形里面!");
}else if(x2<=outXMin||x2>=outXMax||y2<=outYMin||y2>=outYMax){
System.out.println("小矩形在大矩形外面!");
}else{
System.out.println("小矩形和大矩形相交!");
}
}
}
这个题目思路很简单,需要一个循环,每一次用户输入的时候,判断一下用户输入的是几,如果用户输入的是0,则结束循环,如果用户不输入0,则循环一直进行,每次循环判断这个数字是否小于0,小于0定义的负数变量加一,不是,定义的正数变量加一,然后用一个变量计算总和。最后全部输出即可。输出平均数用double输出。
import java.util.Scanner;
class Demo03_11{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
double sum=0; //总和
int positives=0; //正数的个数
int negatives=0; //负数的个数
System.out.print("请输入若干数字:");
while(true){//不管三七二十一 先进来再说
int num=scanner.nextInt();
if(num!=0){
sum+=num;
if(num>0){
positives++;
}else{
negatives++;
}
}else{
break; //跳出当前循环
}
}
if(positives+negatives==0){
System.out.println("没有其他数字的输入,除了0");
}else{
System.out.println("正数的个数"+positives);
System.out.println("负数的个数"+negatives);
System.out.println("总和"+sum);
System.out.println("平均值"+sum/(positives+negatives));
}
}
}
这个题需要知道最大公约数怎么求,最大公约数需要从1开始,到这两个数字最小的那一个,每次将这两个数字除以对应的值,循环每一轮这个值加一,最后得到的数字就是最大公约数。
import java.util.Scanner;
class Demo03_12{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.输入两个数字
System.out.print("请输入两个数字:");
int n1=scanner.nextInt();
int n2=scanner.nextInt();
int gcd=1;
for(int i=n1=1;i--){//判断是都可以整除
if(n1%i==0&&n2%i==0){
gcd=i;
break;
}
}
System.out.println(gcd);
}
}
这个题目首先得读懂题目的意思,例如输入120,从2开始找可以整出的最小数,120/2=60,60/2=30,30/2=15,15/3=5,5/5=1.
则输出22235.我们需要一个循环,每次寻找可以整除的数字,找到了跳出循环,进行下一轮循环。
import java.util.Scanner;
class Demo03_13{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");//提示输入
int num=scanner.nextInt();
while(true){、、每次从2开始判断 如果可以整除,就整出结束这轮循环。
for(int i=2;i<=num;i++){
if(num%i==0){
System.out.print(i+" ");
num=num/i;
break;
}
}
if(num==1){
break;
}
}
}
}
这个题目是一个嵌套的循环,首先我们要找到规律。先外层循环控制行数,内层循环找规律,从最后一行看,7654321234567,这个好像可以用一个递增数的绝对值来解决。分析规律后,我们可以写出代码。
4 3 2 1 2 3 4
-3 -2 -2 0 1 2 3
第4行 x∈[-3,3] y=|x|+1
第5行 x∈[-4,4] y=|x|+1
import java.util.Scanner;
class Demo03_14{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入行数:");
int line=scanner.nextInt();
for(int i=1;i<=line;i++){
for(int k=1;k<=(line-i);k++){
if(line<10){
System.out.print(" ");
}else{
System.out.print(" ");
}
}
for(int x=-(i-1);x<=i-1;x++){
if(line<10){
System.out.printf("%-2d",Math.abs(x)+1);
}else{
System.out.printf("%-3d",Math.abs(x)+1);
}
}
System.out.println();
}
}
}
这里有四个图案。我们只需要找出规律很容易写出来。
丢I个:两层循环,第二层循环每次的数字从1开始到行数的值,每输出一行换行即可。
第二个:这个和第一个是相反的,我们需要i的值从6开始,然后和第一个一样,输出一行换行。
第三个:这个题目首先输出空格,空格的个数可以观察规律,每一行空格的个数是6-行数,很容易写出循环。然后第二层循环j的值从行数开始每次减一。第四个思路和第三个相同。
class Demo03_15{
public static void main(String[] args){
for(int i=1;i<=6;i++){
for(int j=1;j<=i;j++){
System.out.print(j+" ");
}
System.out.println();
}
System.out.println("==========");
for(int i=1;i<=6;i++){
for(int j=1;j<=7-i;j++){
System.out.print(j+" ");
}
System.out.println();
}
System.out.println("==========");
for(int i=1;i<=6;i++){
for(int k=1;k<=6-i;k++){
System.out.print(" ");
}
for(int j=i;j>=1;j--){
System.out.print(j+" ");
}
System.out.println();
}
System.out.println("==========");
for(int i=1;i<=6;i++){
for(int k=1;k<=i-1;k++){
System.out.print(" ");
}
for(int j=1;j<=7-i;j++){
System.out.print(j+" ");
}
System.out.println();
}
}
}
这个题目首先观察规律,需要两个循环,外面的控制行数,里面的是从二的零次方开始到行数减一次方再到二的零次方。
第4行
1 2 4 8 4 2 1
0 1 2 3 2 1 0
x -3 -2 -1 0 1 2 3
第5行
1 2 4 8 16 8 4 2 1
0 1 2 3 4 3 2 1 0
x -4-3-2-1 0 1 2 3 4
我们很容易找到规律,前面打印它的绝对值次方,后面打印他的平方。
class Demo03_16{
public static void main(String[] args){
for(int i=1;i<=8;i++){
for(int k=1;k<=8-i;k++){
System.out.print(" ");
}
//每次输出需要控制每个数字的所占行数,才能对齐
for(int x=-(i-1);x<=i-1;x++){
System.out.printf("%4d",(int)Math.pow(2,i-1-Math.abs(x)));
//pow 是double类型,需要转换成int
}
System.out.println();
}
}
}
这个题需要输出2-1000之间所有素数,我们需要知道如何判断素数。我们需要一个循环,从2开始到他自己的前一个数字,一直取余,如果有哪个数字取余位0,则不为素数,否则位素数。知道这个之后我们只需要用一个外层循环就可以了。最后输出结果即可。
import java.util.*;
public class ti317 {
public static void main(String []args) {
int k = 0;//判断是否为素数一句
for (int i = 2;i<=1000;i++)//1999次循环
{
int a = 0;
for (int j = 2;j
这个题目很简单,只需要设定一个sum,为派的数值,然后设定一个double类型的k=1,每次k=-k实现式子的一正一反,然后一直循环下去即可看到最接近派的值。
public class ti318 {
public static void main(String[] args) {
double p;
double k = 1.0;//实现一加一减
double m = 1.0;
double sum = 0 ;//计算总和
for (int i = 1;;i++)
{
m = k/(2*i-1);
k=-k;//取反
sum+=m;
System.out.println(sum*4);
}
//System.out.println(sum*4);
}
}
这个题目和上一个题目一样,一直相加即可,设置个循环,初始值为1,每次加i/i!即可,利用math.pow计算阶乘,最后每10000个输出一次结果。
import java.util.Scanner;
class Demo03_19{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int imax=scanner.nextInt();
double e=1;
double item=1.0;
for(int i=1;i<=imax;i++){
item=item*i; //n!=(n-1)*n;
e+=1/item;
}
System.out.println(e);
}
}
首先我们要知道闰年的算法。
1.公历闰年判定遵循的规律为:四年一闰、百年不闰、400年再闰。
2.公历闰年的精确计算方法:普通年能被四整除且不能被100整除的为闰年。
然后对100取余位0的让他对4取余,为0则为闰年。否则对4取余位0对100取余不为0时闰年。
public class ti320 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//1.公历闰年判定遵循的规律为:四年一闰、百年不闰、400年再闰。
//2.公历闰年的精确计算方法:普通年能被四整除且不能被100整除的为闰年。 int num = 0;
for (int i =101;i<=2100;i++)
{
if (i%100==0)
{
if (i%400==0)
{
System.out.print(i+" ");
num++;
}
}
else
{
if (i%4==0 && i%100!=0)
{
System.out.print(i+ " ");
num++;
}
}
}
System.out.println();
System.out.print(num);
}
}
这个题目很简单,只要从1开始对这个数字取余,等于0的加到定义的sum里面,然后最后循环到这个数字前一个数字,循环结束判断是否相加等于这个数字,等于输出即可。
import java.util.*;
public class ti321 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 1;i<=10000;i++)
{
int sum = 0;
for (int j = 1;j
这个题目只要对前面那个程序加一个循环,多定义两个变量,分别为人和计算机赢的次数,只要有一个等于2就结束循环。
import java.util.Random;
import java.util.Scanner;
public class ti322 {
public static void main(String[] args) {
Random random=new Random();//定义随机数对象//产生2以内的随机数
Scanner in = new Scanner (System.in);
int p = 0 ;
int c = 0;
while (p!=2&&c!=2)
{
int a = random.nextInt(3);
System.out.println("输入0/1/2分别代表石头剪刀布");//提示用户输入
int b = in.nextInt();//读取数据
if (a==0)
//判断哪个人赢了
{
if (b==0)
{System.out.println("我是石头你是石头平了");}
if (b==1)
{System.out.println("我是石头你是剪刀你输了");
c++;}//谁赢了就给睡加一
if (b==2)
{System.out.println("我是石头你是布你赢了");
p++;}
}
if (a==1)
{
if (b==0)
{System.out.println("我是剪刀你是石头你赢了");
p++;}//谁赢了就给睡加一
if (b==1)
System.out.println("我是剪刀你是剪刀平了");
if (b==2)
{System.out.println("我是剪刀你是布你输了");
c++;}
}
if (a==2)
{
if (b==0)
{System.out.println("我是布你是石头你输了");
c++;}
if (b==1)//谁赢了就给睡加一
{System.out.println("我是布你是剪刀你赢了");
p++;}
if (b==2)
System.out.println("我是布你是布平了");
}
}
if (c==2)
System.out.println("最后计算机赢了");
else System.out.println("最后你赢了");
}
}
这个题只用一个数组,然后每次用数字对2取余得到的数字放入数组即可,取余后再将这个数字除以二,只要这个数字位0了,循环结束,再对数组进行逆序输出即可,
import java.util.*;
public class ti323 {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
int a = in.nextInt();
int[] num = new int[99];//定义数组放值
int i ;
for ( i = 0;a!=0;i++)
{
num[i] = a%2;//取余计算二进制
a/=2;//除以二
}
//数组逆序输出
for (int j = i-1;j>=0;j--)
{
System.out.print(num[j]);
}
}
}
24.
这道题需要记录用户输入的数字,把最大值初始化为0,后面输入的数字等于最大值就给计数器加一,小于不用管,大于就把计数器初始化为1,然后最大值替换即可。最后输出结果。
import java.util.Scanner;
class Demo03_24{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int num=0;//记录数字
int max=0;//记录最大的数字
int count=0;//记录数字出现次数
System.out.print("请输入数字:");
while(true){
num=scanner.nextInt();//循环读取数字 0结束
if(num==0){
break;
}else if(num>max){
max=num;
count=1;
}else if(num==max){
count++;
}
}
System.out.println("max="+max+",count="+count);
}
}