0

我在这里想要完成的是使用三个单独的类启动一个程序,我似乎遇到了错误。我对此比较陌生,还没有完全理解 Java 语言。所以请对我放轻松,并随时就任何可能有助于磨练我的技能的事情给我额外的建议。

package com.weightroom;

public class Baeyul { //박스 생성
    
    String name,gender;
    int [] threemax = new int [3];
    int weight,total,rank;

}

第二课

package com.weightroom;

import java.util.Scanner;

public class Record {

    int inwon;
    
    Baeyul[] bae;
    
    Scanner sc= new Scanner(System.in);
    
    public void set() {
        
        do {
            System.out.print("인원 수? ");
            inwon= sc.nextInt();
        }while(inwon<1||inwon>5);
        
        bae= new Baeyul[inwon];
    
    }
    
    public void input() {
        
        String[] title = {"벤치?","데드?","스쿼트&quot;};
        
        //반복문
        
        for(int i=0;i<inwon;i++) {
            
            bae[i] = new Baeyul();
            
            System.out.print((i+1)+ "번째 이름? ");
            bae[i].name = sc.next();
        
            System.out.print("성별? ");
            bae[i].gender = sc.next();
            
            System.out.print("몸무게? ");
            bae[i].weight = sc.nextInt();
            
            for(int j=0;j<3;j++) { //벤데스?
                
                System.out.print(title[j]);
                bae[i].threemax[j] = sc.nextInt();
                bae[i].total+= bae[i].threemax[j];
            }
            
        }       
    }
        
        private void ranking() {
            
            int i,j;
            
            for (i=0;i<inwon;i++) {
                bae[i].rank=1;
        }
            
        for(i=0;i<inwon-1;i++) {
            for(j=1;j<inwon;j++) {
                
                if(bae[i].total>bae[j].total) {
                    bae[j].rank++;
                }else if(bae[i].total<bae[j].total) {
                    bae[i].rank++;
                }
            }
        }
    }   
        
        public void print() {
            
            ranking(); 
            
            for(int i=0;i<inwon;i++) {
                System.out.printf("%6s", bae[i].name);
                System.out.printf("%4s", bae[i].gender);
                System.out.printf("%4d", bae[i].weight);
                
                for(int j=0;j<3;j++) {
                    System.out.printf("%4d",bae[i].threemax);
                }
                
                System.out.printf("%4d",bae[i].total);
                System.out.printf("%4d|n",bae[i].rank);
                
        }
    }
}

*第三课

package com.weightroom;

public class RecordUse {

    public static void main(String[] args) {
        
        Record li= new Record();
        
        li.set();
        li.input();
        li.print();

    }

}
launch
     jamesException in thread "main"    1 100java.util.IllegalFormatConversionException: d != [I
        at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302)
        at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2793)
        at java.util.Formatter$FormatSpecifier.print(Formatter.java:2747)
        at java.util.Formatter.format(Formatter.java:2520)
        at java.io.PrintStream.format(PrintStream.java:970)
        at java.io.PrintStream.printf(PrintStream.java:871)
        at com.weightroom.Record.print(Record.java:83)
        at com.weightroom.RecordUse.main(RecordUse.java:11)
4

1 回答 1

0

在 print 方法中您没有放置 threemax 数组的索引,因此当您尝试以 %4d 格式打印数组时,它会引发异常。

将threemax 更改为threemax [ j ]。

像下面

利用

 for(int j=0;j<3;j++) {
      System.out.printf("%4d",bae[i].threemax[j]);
 }

代替

for(int j=0;j<3;j++) {
      System.out.printf("%4d",bae[i].threemax);
}

在打印方法中。

于 2021-01-29T12:04:03.620 回答