求大佬帮我看看我的代码啊!!!!!!

维豆宝宝 2019-10-16 06:00:54
import java.util.Scanner;

public abstract class Main {
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
int age[] = new int[3];
for(int x = 0;x < 2;x++) {
age[x] = sc.nextInt();
if(age[x] <= 0 || age[x] >= 130){
break;
}
}
for(int n = 1;n <= 100;n++) {
age[0] = age[0] + 1;
age[1] = age[1] + 1;
age[2] = age[2] + 1;

int b = age[0] / 10;
int c = age[0] - b*10;

int f = age[1] / 10;
int g = age[1] - f*10;

int i = age[2] / 10;
int j = age[2] - i*10;

if ((c==3||g==6||j==9)||(c==3||g==9||j==6)||(c==6||g==3||j==9)||(c==6||g==9||j==3)||(c==9||g==6||j==3)||(c==9||g==3||j==6)) {
System.out.print(n);
break;
}
if (n == 100) {
System.out.print("so sad!");
}
}
}
}


题目如下:

369寝室是比较特殊的寝室,因为别的寝室都住了四个人,而369寝室只有三个人。也因为这个原因,寝室里的三位同学感情特别好。但是,毕业在即,三位小伙伴马上要分别。为了在未来的某个日子可以见面,三位小伙伴有了一个约定,假设在未来的某一年,三位小伙伴的年龄的末尾正好出现3、6、9三个数,那么他们会再次相聚。

现在问题来了,假设今年三位小伙伴的年龄分别是x,y,z,那么,他们三人最早几年后可以相聚呢?

输入格式:
输入数据包括三个整数x,y,z,分别表示三位伙伴的年龄。

输出格式:
如果小伙伴最早在n年后可以相见(不包括当前这一年),那么请输出这个n;如果100年内都不存在这样的情况,输出:so sad!

输入样例:
25 22 28
输出样例:
1

大佬们我哪里出错了啊 哇哇哇哇哇
...全文
329 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
L_vampire 2019-11-15
  • 打赏
  • 举报
回复
第一个循环小于2是什么鬼?
weixin_43919063 2019-11-14
  • 打赏
  • 举报
回复
1) for(x = 0;x < 3;x++) { age[x] = sc.nextInt(); if(age[x] <= 0 || age[x] >= 130) { break; } } 2) if ((c==3&&g==6&&j==9)||(c==3&&g==9&&j==6)||(c==6&&g==3&&j==9)||(c==6&&g==9&&j==3)||(c==9&&g==6&&j==3)||(c==9&&g==3&&j==6)) { System.out.print(n); break; }
不能留白 2019-10-29
  • 打赏
  • 举报
回复
引用 12 楼 不能留白 的回复:
[quote=引用 11 楼 不能留白 的回复:] 给你,自己参考一下哪里出问题了

package eg4;

import java.util.Scanner;

public class Test7 {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入三个年龄:");
		int age1=sc.nextInt();
		int age2=sc.nextInt();
		int age3=sc.nextInt();
		int a,b,c;
		boolean key=true;
		for (int i = 1; i < 101; i++) {
			a=(age1+i)%10;
			b=(age2+i)%10;
			c=(age3+i)%10;
			if ((a==3&&b==6&&c==9)||(a==3&&b==9&&c==6)||(a==6&&b==3&&c==9)||(a==6&&b==9&&c==3)||(a==9&&b==3&&c==6)||(a==9&&b==6&&c==3)) {
				System.out.println("结果为:"+i+"年后");
				key=false;
				break;
			}
		}
		if (key) {
			System.out.println("so sad!");
		}
	}

}
没看清楚,我还以为3、6、9只能出现一次,原来是可以出现多次,自己改一下if的判断就行了[/quote] 改成这样就行了

if (a*b*c!=0&&a%3==0&&b%3==0&&c%3==0) {
				System.out.println("结果为:"+i+"年后");
				key=false;
				break;
			}
不能留白 2019-10-29
  • 打赏
  • 举报
回复
引用 11 楼 不能留白 的回复:
给你,自己参考一下哪里出问题了

package eg4;

import java.util.Scanner;

public class Test7 {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入三个年龄:");
		int age1=sc.nextInt();
		int age2=sc.nextInt();
		int age3=sc.nextInt();
		int a,b,c;
		boolean key=true;
		for (int i = 1; i < 101; i++) {
			a=(age1+i)%10;
			b=(age2+i)%10;
			c=(age3+i)%10;
			if ((a==3&&b==6&&c==9)||(a==3&&b==9&&c==6)||(a==6&&b==3&&c==9)||(a==6&&b==9&&c==3)||(a==9&&b==3&&c==6)||(a==9&&b==6&&c==3)) {
				System.out.println("结果为:"+i+"年后");
				key=false;
				break;
			}
		}
		if (key) {
			System.out.println("so sad!");
		}
	}

}
没看清楚,我还以为3、6、9只能出现一次,原来是可以出现多次,自己改一下if的判断就行了
不能留白 2019-10-29
  • 打赏
  • 举报
回复
给你,自己参考一下哪里出问题了

package eg4;

import java.util.Scanner;

public class Test7 {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入三个年龄:");
		int age1=sc.nextInt();
		int age2=sc.nextInt();
		int age3=sc.nextInt();
		int a,b,c;
		boolean key=true;
		for (int i = 1; i < 101; i++) {
			a=(age1+i)%10;
			b=(age2+i)%10;
			c=(age3+i)%10;
			if ((a==3&&b==6&&c==9)||(a==3&&b==9&&c==6)||(a==6&&b==3&&c==9)||(a==6&&b==9&&c==3)||(a==9&&b==3&&c==6)||(a==9&&b==6&&c==3)) {
				System.out.println("结果为:"+i+"年后");
				key=false;
				break;
			}
		}
		if (key) {
			System.out.println("so sad!");
		}
	}

}
qq_39936465 2019-10-29
  • 打赏
  • 举报
回复
不好意思上面的程序有问题没考虑到尾数为0的情况

for (int i = 1; i < 101; i++) {
			int x=(age[0]+i)%10;
			int y=(age[1]+i)%10;
			int z=(age[2]+i)%10;
			if (x*y*z!=0&&x%3==0&&y%3==0&&z%3==0) {
				System.out.println("最早" + i + "年后相遇");
				break;
			}
			if (i == 100) {
				System.out.println("So sad!");
			}
		}
qq_39936465 2019-10-29
  • 打赏
  • 举报
回复
引用 8 楼 somanei 的回复:
同小白写的 有什么可以更方便的方法请回复我 我爱学习

for (int i = 1; i < 101; i++) {
			if ((age[0] + i) % 10 % 3 == 0 && (age[1] + i) % 10 % 3 == 0 && (age[2] + i) % 10 % 3 == 0) {
				System.out.println("最早" + i + "年后相遇");
				break;
			}
			if (i == 100) {
				System.out.println("So sad!");
			}
		}		
somanei 2019-10-28
  • 打赏
  • 举报
回复
同小白写的 有什么可以更方便的方法请回复我 我爱学习 Scanner sc = new Scanner(System.in); int [] age = new int[3]; for (int i = 0,y = 0; i < 3; i++) { System.out.println("请输入第"+ ++y +"个人的年龄:"); age[i] = sc.nextInt(); } int x = age[0]; int y = age[1]; int z = age[2]; for (int i = 0; i < 100; i++) { if ((x+i) %10 ==3 || (x+i) %10 ==6 || (x+i) %10 == 9) { if ((y+i) %10 ==3 || (y+i) %10 ==6 ||(y+i) %10 == 9) { if ((z+i) %10 ==3 || (z+i)%10 ==6 || (z+i) %10 == 9) { System.out.println("最早"+i+"年后相遇"); break; } } } }
  • 打赏
  • 举报
回复
引用 4 楼 weixin_40290083的回复:
int a[3]; for(int j =0 ; j < 3; j++){ a[j] = age[j] %10; } //对数组a进行由小到大的排序; int temp = 1; for(int j =0; j < 3;j ++){ temp = temp && (a[i] == (i+1) *3); } if(temp){ printf("聚"); }else{ rpintf("不聚"); }
这是用c写的吧,你这个思路好迷
  • 打赏
  • 举报
回复
最后一个if语句有问题,退出循环时n最大为101,所以n==100肯定有问题的。其次这代码写得真难看
weixin_40290083 2019-10-16
  • 打赏
  • 举报
回复
数组排序的代码没有写,
weixin_40290083 2019-10-16
  • 打赏
  • 举报
回复
int a[3]; for(int j =0 ; j < 3; j++){ a[j] = age[j] %10; } //对数组a进行由小到大的排序; int temp = 1; for(int j =0; j < 3;j ++){ temp = temp && (a[i] == (i+1) *3); } if(temp){ printf("聚"); }else{ rpintf("不聚"); }
qq_39936465 2019-10-16
  • 打赏
  • 举报
回复
3、6、9是可以被3除尽的再判断任意2个数不相等
Soinice 2019-10-16
  • 打赏
  • 举报
回复
没错ddd 只是太low
qq_39936465 2019-10-16
  • 打赏
  • 举报
回复
年龄末尾,你只要取10的余数就行了c=age[i]%10就行了

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧