#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. Большое тебе спасибо, чувак. Теперь программа работает нормально!!