Java 从JSP文本框中获取矩阵的输入?
我试图从JSP页面获取矩阵的输入,这是一个多维数组,并将其打印出来。 我尽力了 INDEX.JSP TSP.JSP 当我输入值city为4时,矩阵=1 2 3 4 5 6 7 8 8 8 8 8 1 2 3 4并单击提交,它显示异常: java.lang.NumberFormatException:用于输入字符串:1 2 3 4 5 6 7 8 8 8 1 2 3 4 这样做的目的基本上是,如果成功的话,我想把它们传递给java类来解决旅行推销员的问题。程序运行良好。我想为它创建一个web界面,但我在这一点上陷入了困境 您可以尝试以下代码:Java 从JSP文本框中获取矩阵的输入?,java,arrays,jsp,servlets,jakarta-ee,Java,Arrays,Jsp,Servlets,Jakarta Ee,我试图从JSP页面获取矩阵的输入,这是一个多维数组,并将其打印出来。 我尽力了 INDEX.JSP TSP.JSP 当我输入值city为4时,矩阵=1 2 3 4 5 6 7 8 8 8 8 8 1 2 3 4并单击提交,它显示异常: java.lang.NumberFormatException:用于输入字符串:1 2 3 4 5 6 7 8 8 8 1 2 3 4 这样做的目的基本上是,如果成功的话,我想把它们传递给java类来解决旅行推销员的问题。程序运行良好。我想为它创建一个web界面,
public class StringToInt2dArray {
public static void main(String [] args) {
String s = "1 2 3 4 5 6 7 8 8 8 8 8 1 2 3 4";
System.out.println("Input string: " + s);
String [] ss = s.split(" ");
System.out.println("Array of strings: " + Arrays.toString(ss));
int [] int1d = new int [ss.length];
for (int i = 0; i < ss.length; i++) {
int1d [i] = Integer.parseInt(ss[i]);
}
System.out.println("Array of ints: " + Arrays.toString(int1d));
int rows = 4;
int cols = 4;
int ints2d [][] = new int [rows][cols]; // need to know the 2d array size
int n = 0;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
ints2d [i][j] = int1d [n++];
}
}
System.out.println("Array of ints in 2D: ");
for (int i = 0; i < ints2d.length; i++) {
System.out.println(Arrays.toString(ints2d [i]));
}
}
}
最后,这一切都很顺利。 这将接受字符串数组,然后将其转换为整数并存储在数组中
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Display</title>
</head>
<body>
<% int city= Integer.parseInt(request.getParameter("cities"));
//int matrix[][]=new int[100][100];
String numbers=request.getParameter("matrix");
String[] splitText = numbers.split(" ");
int[] mat = new int[splitText.length];
for(int i = 0; i < splitText.length; i++)
{
mat[i] = Integer.parseInt(splitText[i]);//parse every element from string to int and store it in array.
}
int array2d[][] = new int[city][city];
int count=0;
for(int i=0; i<city;i++)
{
for(int j=0;j<city;j++) {
if(count==mat.length)
break;
array2d[i][j]=mat[i*city+j];//conversion of 1d array to 2d
count++;
}
}
for(int i=0; i<array2d.length;i++)
{
for(int j=0; j<array2d[i].length;j++)
{
out.print(array2d[i][j]+" ");
}
}
%>
</body>
</html>
唯一的问题是,它不是以矩阵格式打印的。任何建议都可以接受 你错过了什么。打印一行后,需要移动到下一行
for(int i=0; i<array2d.length;i++) {
for(int j=0; j<array2d[i].length;j++) {
out.print(array2d[i][j]+" ");
} out.println();
}
@Torgeist,谢谢我编辑并更改了它。但是我也得到了上面提到的例外。帮我解决这个问题,因为这对我当前的项目非常重要。谢谢。您在index.jsp中为城市和矩阵输入了哪些值?这是。城市=4。因此,对于4x4矩阵,我输入了matrix=1 2 3 4 5 6 7 8 8 8 8 8 8 8 8 1 2 3 4在桌面Java程序中尝试此代码,并看到结果:Integer.parseInt1 2 3 4 5 6 7 8 8 8 8 8 8 8 8 1 2 3 4显示相同的异常。感谢@prasad_u作为您的建议,我完成了编码部分并在下面进行了回答。您可以使用1个带有行和列的HTML表格打印矩阵,和2个JSP JSTL forEach标记,以从数组中打印。在网上搜索一些关于如何单独使用它们的示例。请参阅以下帖子:。是的,当然。但这对我的项目来说不是必需的。我将这个2d数组作为Java代码的输入,用于解决旅行商问题。谢谢你指导我。
Input string: 1 2 3 4 5 6 7 8 8 8 8 8 1 2 3 4
Array of strings: [1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 1, 2, 3, 4]
Array of ints: [1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 1, 2, 3, 4]
Array of ints in 2D:
[1, 2, 3, 4]
[5, 6, 7, 8]
[8, 8, 8, 8]
[1, 2, 3, 4]
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Display</title>
</head>
<body>
<% int city= Integer.parseInt(request.getParameter("cities"));
//int matrix[][]=new int[100][100];
String numbers=request.getParameter("matrix");
String[] splitText = numbers.split(" ");
int[] mat = new int[splitText.length];
for(int i = 0; i < splitText.length; i++)
{
mat[i] = Integer.parseInt(splitText[i]);//parse every element from string to int and store it in array.
}
int array2d[][] = new int[city][city];
int count=0;
for(int i=0; i<city;i++)
{
for(int j=0;j<city;j++) {
if(count==mat.length)
break;
array2d[i][j]=mat[i*city+j];//conversion of 1d array to 2d
count++;
}
}
for(int i=0; i<array2d.length;i++)
{
for(int j=0; j<array2d[i].length;j++)
{
out.print(array2d[i][j]+" ");
}
}
%>
</body>
</html>
for(int i=0; i<array2d.length;i++) {
for(int j=0; j<array2d[i].length;j++) {
out.print(array2d[i][j]+" ");
} out.println();
}