杭电Java2023 我自己的测试数据跟AC过的代码是一样的输出,不明白错在哪里,求大神指教

我的代码:
import java.util.Scanner;

public class Main{

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

while(in.hasNext()) {
int n = in.nextInt();
int m = in.nextInt();
double sum = 0;
double arg = 0;
int number = 0;
int end = 0;
double market[][]=new double [n+1][m+1];
double claarg[]=new double[m+1];
for(int i = 1;i<=n;i++) {
for(int j = 1;j<=m;j++){
market[i][j]=in.nextDouble();
}
}
for(int i = 1;i<=n;i++) {
for(int j = 1;j<=m;j++)
{
sum = sum+market[i][j];
if (j==m&&i!=n)
{
arg = sum/m;
System.out.print(String.format("%.2f",arg)+" ");
sum = 0;
}
if (j==m&&i==n)
{
arg = sum/m;
System.out.println(String.format("%.2f",arg));
sum = 0;
}
}
}
for(int j = 1;j<=m;j++) {
for(int i = 1;i<=n;i++)
{
sum = sum+market[i][j];
if (i==n&&j!=m)
{
arg = sum/n;
claarg[m]=arg;
System.out.print(String.format("%.2f",arg)+" ");
sum = 0;
}
if (i==n&&j==m)
{
arg = sum/n;
System.out.println(String.format("%.2f",arg));
claarg[m]=arg;
sum = 0;
}
}
}
for(int i = 1;i<=n;i++) {
for(int j = 1;j<=m;j++)
{
if (market[i][j]>=claarg[j])
{
number++;
if (number==m)
{
end++;
number = 0;
}
}

}
}
System.out.println(end);
System.out.println();
}
}
}

 AC过的代码:
 import java.util.Scanner;

public class prectise
{
public static void main(String[]args)
{
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext())
{
int n=scanner.nextInt();
int m=scanner.nextInt();
int arr[][]=new int[n][m];
double hori[]=new double[n];
double vert[]=new double[m];
int good=0;//求满足条件学生数量

        double averhori=0;//学生的平均成绩
        double aververt=0;//学科的平均成绩
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                arr[i][j]=scanner.nextInt();
                hori[i]+=arr[i][j];
            }

        }

        for(int j=0;j<m;j++)
        {
            for(int i=0;i<n;i++)
            {
                vert[j]+=arr[i][j];
            }
        }


        for(int i=0;i<n;i++)
        {
            averhori=hori[i]/m;//学生的平均成绩

            System.out.printf("%.2f",averhori);
            if(i!=n-1)
                System.out.print(" ");

        }
        System.out.println();
        for(int j=0;j<m;j++)
        {
            aververt=vert[j]/n;
            System.out.printf("%.2f",aververt);
            if(j!=m-1)
                System.out.print(" ");
        }
        System.out.println();

        for(int i=0;i<n;i++)
        {
            boolean flag=true;
            for(int j=0;j<m;j++)
            {

                if((arr[i][j]<vert[j]/n))
                    flag=false;
            }
            if(flag)
            {
                good++;
            }

        }
        System.out.println(good);
        System.out.println();




    }

}

}

4个回答

我AC了,楼主太粗心

我贴的是我正确的代码

这里,你把j写成m了
图片说明

这里,number == m后变成0,number不等于m还是要初始化为0啊,你没写
图片说明

m0_37632283
眼里一片海 以后一定会多注意的。 谢谢 O(∩_∩)O哈哈~ AC了
一年多之前 回复

有时候系统也会出点问题的,不用太在意

System.out.print(String.format("%.2f",arg)+" "); 不是double类型的吗,输出String.format方法是何意?

m0_37632283
眼里一片海 题目要求保留两位小数.....
一年多之前 回复

题目要求要保留两位小数(⊙o⊙)…

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!