использование 3 классов для реализации ошибки программы

#java #class #printf #public #java.lang

#java #класс #printf #публичный #java.язык

Вопрос:

То, что я пытаюсь выполнить здесь, — это запустить программу, использующую три отдельных класса, и, похоже, я получаю ошибки. Я относительно новичок в этом и еще не совсем понимаю язык 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 = {"벤치?","데드?","스쿼트"};
        
        //반복문
        
        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("M", bae[i].weight);
                
                for(int j=0;j<3;j  ) {
                    System.out.printf("M",bae[i].threemax);
                }
                
                System.out.printf("M",bae[i].total);
                System.out.printf("M|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)
 

Комментарии:

1. из-за вашего вопроса кажется, что ваша цель — реализовать ошибку, это немного странно. Что именно представляет собой строка, которая выдает ошибку? Проверьте это и добавьте к нему точку останова, чтобы увидеть, соответствует ли переменная тому, что вы ожидаете

Ответ №1:

В методе print вы не ввели индекс массива threemax, поэтому при попытке распечатать массив в формате M он выдает исключение.

Измените threemax на threemax [ j ] .

Как показано ниже

Использование

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

Вместо того , чтобы

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

в методе печати.

Комментарии:

1. Большое тебе спасибо, чувак. Теперь программа работает нормально!!