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大佬们我哪里出错了啊  哇哇哇哇哇

解决方案 »

  1.   

    年龄末尾,你只要取10的余数就行了c=age[i]%10就行了
      

  2.   

    没错ddd  只是太low
      

  3.   

    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("不聚");
    }
      

  4.   

    最后一个if语句有问题,退出循环时n最大为101,所以n==100肯定有问题的。其次这代码写得真难看
      

  5.   

    同小白写的 有什么可以更方便的方法请回复我 我爱学习
    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;
    }
    }
    }
    }
      

  6.   

    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!");
    }
    }
      

  7.   

    不好意思上面的程序有问题没考虑到尾数为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!");
    }
    }
      

  8.   

    给你,自己参考一下哪里出问题了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!");
    }
    }}
      

  9.   


    没看清楚,我还以为3、6、9只能出现一次,原来是可以出现多次,自己改一下if的判断就行了改成这样就行了if (a*b*c!=0&&a%3==0&&b%3==0&&c%3==0) {
    System.out.println("结果为:"+i+"年后");
    key=false;
    break;
    }
      

  10.   

    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;
        }