我正在尝试数组,虽然我可以根据用户输入找到如何输入二维数组的元素,但我无法找到如何提示用户单独输入二维数组中的整行(每个数字之间有一个空格),而不是输入每个数字,然后按enter键。我能在这里得到一些帮助吗?我知道这将是我的下一次测试,谢谢大家!
这是我的代码:
import java.util.Scanner;
public class NewArray
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of rows: ");
int Rows = input.nextInt();
System.out.print("Enter the number of columns: ");
int Columns = input.nextInt();
int[][] array = new int[Rows][Columns];
System.out.println("Enter the numbers in array: ");
for (int i = 0; i < array.length; i++)
{
for (int j = 0; j < array[i].length; j++)
array[i][j] = input.nextInt();
}
System.out.println(isConsecutiveFour(array));
}
您也可以将每一行作为输入,然后使用分隔符逐字符输入。例如
String s = sc.next();
for(int j=0;j<s.length();j++)
{
array[i][j] = Character.getNumericValue(s.charAt(j));
}
或者你可以做
array[i][j]=s.charAt(j)-"0";
循环rows
次,循环String l = input.nextLine();
使用分隔符(可以定义空格、逗号或分号)拆分字符串。
当然,实现验证逻辑。例如Nan情况、分割的阵列大小与columns
情况不匹配等
顺便说一句,基于java命名约定,更好地使用rows
、columns
作为名称。否则,它们看起来像课堂。。。。
好吧,你可以为每一行提示他们。。。
for (int i = 0; i < array.length; i++) {
// Prompt user to enter column values for each row
System.out.printf("Enter %d integers for row %d/%d (delimeted by spaces): ",
columns, i+1, rows);
for (int j = 0; j < array[i].length; j++)
array[i][j] = input.nextInt();
}
输出
user@ubuntu:~$ java NewArray
Enter the number of rows: 4
Enter the number of columns: 3
Enter the numbers in array:
Enter 3 integers for row 1/4 (delimeted by spaces): 1 2 3
Enter 3 integers for row 2/4 (delimeted by spaces): 4 5 6
Enter 3 integers for row 3/4 (delimeted by spaces): 7 8 9
Enter 3 integers for row 4/4 (delimeted by spaces): 10 11 12
执行您的要求的一种方法是将他们键入的内容作为整行输入。然后你看这行,检查是否有足够的值,如果他们没有按照你的方式输入,就会以某种方式失败。
问题是,这让用户非常恼火。如果它需要10个数字,但由于错误计数或句点所在的额外空格而输入9或11,该怎么办?你打算怎么办?
这在很大程度上取决于你的程序如何回应用户做得不"正确"
因此,如果他们输入的数字太多,你可以回显第一个数字(直到所需的数字),并询问是否可以只使用这些数字。然后他们回答是或否。
如果他们输入的数字太少,你可以呼应他们输入的,然后要求更多的数字来填写所需的计数。
所有这些都需要编写大量的代码,而且可能过于挑剔——你必须把它做得恰到好处,否则,它会再次让用户感到困惑。
另一种可能的解决方案是让他们一个接一个地输入,然后你向他们回显信息,让他们知道自己在哪里。像"请在第3行输入元素4:"这样的东西可以帮助他们跟踪它。
也许你对此研究得越多,就越能看到当今常见用户界面的价值,无论是对于独立应用程序还是web应用程序。例如,在网络上,您可以向他们显示一个包含行和列文本框的表单,如果某些框没有正确填写,则可以轻松地重新显示该页面。基于控制台的用户界面在很多年前就已经使用过了,但它还有很多不足之处。