java - 迭代二维数组后仅打印一次消息
问题描述
导入 java.util.Scanner;
公共类注意{
public static void main(String[] args) {
String etudiants[][] = new String[1][4];
Scanner saisie = new Scanner(System.in);
for (int i = 0; i < 1; i++) {
System.out.print("\n\nEtudiant BTI00" + (i + 1) + "\n\n");
for (int j = 0; j < 4; j++) {
if (j == 0) {
System.out.print("\n\tCode de l'etudiant : ");
} else if (j == 1) {
System.out.print("\n\tNom etudiant : ");
} else if (j == 2) {
System.out.print("\n\tNote Maths : ");
} else if (j == 3) {
System.out.print("\n\tNote Francais : ");
} else {
System.out.print("\n\tChamps inexistant!");
}
etudiants[i][j] = saisie.nextLine();
}
}
System.out.print("\n\tEtudiants Enregistres : \n\n");
// System.out.print("\tCode\tNom\t\tMaths\tFrancais\n\n");
for (int i = 0; i < 1; i++) {
for (int j = 0; j < 4; j++) {
System.out.print("\t" + etudiants[i][j] + " ");
}
}
System.out.println();
System.out.print("\n\tEntrez code etudiant : ");
String recherche = saisie.nextLine();
boolean trouve = false;
for (int i = 0; i < 1; i++) {
for (int j = 0; j < 4; j++) {
if (recherche.equals(etudiants[i][0])) {
trouve = true;
System.out.print("\n\tCode etudiant correct!");
String math = etudiants[i][2];
String francais = etudiants[i][3];
Double m = new Double(math);
double mathConv = m.doubleValue();
Double f = new Double(francais);
double francaisConv = f.doubleValue();
double moyenne = (mathConv + francaisConv) / 2;
System.out.print("\n\tMoyenne de l'etudiant : " + moyenne);
System.out.print("\n\tEtudiant : " + etudiants[i][j]);
if (moyenne <= 40) {
System.out.print("\n\tEchec!");
} else if (moyenne > 40 && moyenne < 70) {
System.out.print("\n\tReprise!");
} else {
System.out.print("\n\tSucces!");
}
} if (!trouve) {
System.out.print("\n\tCode etudiant incorrect!");
}
}
}
}
}
输入代码学习者后,我只需要显示一条消息,而是显示消息 4 次。循环应该只遍历每一行的第一列并将其与用户输入的内容进行比较。
解决方案
j
最后一个内部 for 循环 ( )的索引变量 ( )for (int j = 0; j < 4; j++) {
从未在循环内使用,因此您实际上根本不需要该循环。除了样本的一般样式问题,您应该像这样重写最后一个循环:
for (int i = 0; i < 1; i++) {
// throw away this
//for (int j = 0; j < 4; j++) {
if (recherche.equals(etudiants[i][0])) {
trouve = true;
// ... rest of the code like you currently have it
// You probably do not need this line too,
// because you have almost the same in your second loop
//System.out.print("\n\tEtudiant : " + etudiants[i][j]);
}
}
推荐阅读
- sql-server - 我应该为每个一致的数据集还是一个 systemCodes 表创建新表?
- sapui5 - API 参考:在哪里可以找到所有可用于聚合绑定信息对象的属性?
- c# - Newtonsoft - 如果属性丢失,如何抛出异常?
- javascript - 如何在每 24 小时后调用一个 JS 函数并将结果与时间戳一起保存在 cookie 中?
- html - 如何忽略主 CSS 中的引导代码
- ruby-on-rails - Ruby on Rails - 为什么我面临可能无法匹配的约束[:exercise_id]
- java - rethinkdb getNearest: RqlRuntimeError: Array over size limit 100000
- php - 无法加载请求的类:Guzzle
- php - 在codeIgniter查询中按DESC和'header_id'分组的日期顺序
- sql - 如果 AGG() OVER(ROWS BETWEEN x PRECEDING) 与当前行相关,则排除这些行?