我正在试验数组,虽然我可以弄清楚如何根据用户输入输入二维数组的元素但我无法弄清楚如何提示用户分别输入二维数组的整行(与每个数字之间的空格,而不是输入每个数字,然后按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));
}
答案 0 :(得分:1)
您也可以将每一行作为输入,然后使用分隔符逐个输入字符。 e.g。
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) - &#39; 0&#39;;
答案 1 :(得分:0)
循环rows
次,String l = input.nextLine();
用分隔符(空格或逗号或分号,你可以定义它)拆分字符串。
当然,实现验证逻辑。例如Nan case,splitted array size与columns
case等不匹配。
btw,基于java命名约定,最好使用rows
,columns
作为名称。否则他们看起来像班级......
答案 2 :(得分:0)
嗯,你可以提示他们每一行......
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
答案 3 :(得分:0)
您要求的一种方法是输入他们输入的整行。然后你查看该行并检查是否有足够的值,如果他们没有按照你的方式输入它,就会以某种方式失败。
问题是,这对用户来说真的很烦人。如果它需要10个数字并且因为错误计数或额外的空间而应该输入9或11怎么办?你打算做什么?
很大程度上取决于你的程序如何响应用户而不是“正确”。
因此,如果输入太多,您可以回显第一个数字(最多为所需的数字)并询问是否可以使用它们。然后他们回答Y或N.
如果输入的数量太少,您可以回复他们输入的数字,然后再要求更多的数字来填写所需的数量。
所有这些都变成了许多代码来编写,而且它可以是不安全的 - 你必须正确地使用它,或者再次使用户感到困惑。
另一种可能的解决方案是让他们一个接一个地输入它们,然后向他们回复信息,以便他们知道它们在哪里。像“请在第3行输入元素4:”这样的东西可以帮助他们跟踪它。
也许您对此的研究越多,您就越能看到当今常见用户界面的价值,无论是独立应用还是Web应用。例如,在Web上,您可以向它们显示包含行和列文本框的表单,如果某些框未填充在右侧,则可以轻松地重新显示该页面。基于控制台的用户界面在很多年前就被使用了,但还有很多不足之处。