Java多维数组输出重复问题求助:新手遇循环及Scanner使用障碍
解决你的Java问题:循环重复输出与Scanner类使用
一、循环输出重复问题的修复
你当前代码用了两层嵌套for循环,外层循环会执行10次(对应id数组的长度),内层循环每次又完整遍历userid数组(也是10次),所以会把所有用户信息重复输出10遍,总共输出100条内容。
只需要用一层循环就能解决——因为id、userid、password三个数组长度一致,索引一一对应,遍历一次即可输出每组对应信息:
import java.util.Scanner; class ArrayStudies { public static void main(String[] args) { // 定义并初始化ID数组 int[] id = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 定义并初始化用户ID数组 String[] userid = { "Admin", "Vale.Vicky", "Lane.Lois", "Kent.Clark", "Wayne.Bruce", "Parker.Peter", "Rogers.Steve", "Luther.Lex", "Osborn.Harry", "Prince.Diana" }; // 定义并初始化密码数组 String[] password = { "Password1", "ZZZZZZZ", "VVVVVV", "AAAAAA", "FFFFFFFF", "RRRRRRR", "QQQQQQ", "GGGGGG", "YYYYYY", "LLLLLLL" }; // 遍历数组输出对应信息 for (int i = 0; i < id.length; i++) { System.out.println("ID: " + id[i] + " UserID: " + userid[i] + " Password: " + password[i]); } } }
关于你提到的“行合并问题”,确保使用System.out.println(自带换行)而非System.out.print,这样每条用户信息会单独占一行,避免排版混乱。
二、Scanner类的正确使用示例
这里给你一个结合现有用户数据的登录验证示例,直观展示Scanner的用法:
import java.util.Scanner; class ArrayStudies { public static void main(String[] args) { // 初始化用户数据数组 int[] id = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; String[] userid = { "Admin", "Vale.Vicky", "Lane.Lois", "Kent.Clark", "Wayne.Bruce", "Parker.Peter", "Rogers.Steve", "Luther.Lex", "Osborn.Harry", "Prince.Diana" }; String[] password = { "Password1", "ZZZZZZZ", "VVVVVV", "AAAAAA", "FFFFFFFF", "RRRRRRR", "QQQQQQ", "GGGGGG", "YYYYYY", "LLLLLLL" }; // 创建Scanner对象读取控制台输入 Scanner scanner = new Scanner(System.in); // 获取用户输入的用户名和密码 System.out.print("请输入用户名:"); String inputUserid = scanner.nextLine(); System.out.print("请输入密码:"); String inputPassword = scanner.nextLine(); // 验证登录信息 boolean loginSuccess = false; for (int i = 0; i < userid.length; i++) { if (userid[i].equals(inputUserid) && password[i].equals(inputPassword)) { System.out.println("登录成功!你的ID是:" + id[i]); loginSuccess = true; break; } } if (!loginSuccess) { System.out.println("用户名或密码错误!"); } // 关闭Scanner资源 scanner.close(); } }
Scanner核心使用要点:
- 通过
new Scanner(System.in)创建实例,关联控制台输入 - 常用读取方法:
nextLine()读取整行字符串,nextInt()读取整数,next()读取空格分隔的单个字符串 - 使用完毕后调用
scanner.close()关闭资源,避免内存泄漏
内容的提问来源于stack exchange,提问作者SCoffers Rel
相关产品推荐
相关产品推荐

