【问题标题】:Taking input to a matrix from JSP textbox?从 JSP 文本框中输入矩阵?
【发布时间】:2019-04-23 17:27:30
【问题描述】:

我正在尝试获取矩阵的输入,这是来自 JSP 页面的多维数组并打印它。 我尽力了,

索引.JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>TSP</title>
</head>

<body>
<h1> Matrix</h1>
<form action="tsp.jsp">
   <label>No of cities</label>
    <input type="text" name="cities">
    <label>Enter matrix</label>
    <input type="text" name="matrix">
   <button type="submit">Submit</button>

</form>
</body>
</html>

TSP.JSP

<%--
  Created by IntelliJ IDEA.
  User: Abhishek
  Date: 11/21/2018
  Time: 12:01 PM
  To change this template use File | Settings | File Templates.
--%>
<%@ 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];

for ( int i=0; i<city;i++) {
    for (int j = 0; j < city; j++) {
        matrix[i][j]= Integer.parseInt(request.getParameter("matrix"));
    }
}

%>

<% out.print(city);

    for ( int i=0; i<city;i++) {
        for (int j = 0; j < city; j++) {
            out.print(matrix);
        }
    }
%>
</body>
</html>

当我输入值 city 为 4 时,matrix = 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 8 8 1 2 3 4”

这样做的目的基本上是,如果成功,我想将这些传递给 java 类来解决旅行商问题。该程序运行良好。我想为它创建一个网络界面,但我被困在这一点上。

【问题讨论】:

  • @Torgeist,谢谢我编辑并更改了它。但后来我也得到了上述异常。帮助我完成这个,因为这对我当前的项目非常重要。谢谢。
  • 您在index.jsp 中为citymatrix 输入了哪些值?这是NumberFormatException
  • 城市 =4。所以对于 4x4 矩阵,我输入了 matrix = 1 2 3 4 5 6 7 8 8 8 8 8 1 2 3 4
  • 在桌面 Java 程序中尝试此代码并查看结果:Integer.parseInt("1 2 3 4 5 6 7 8 8 8 8 8 1 2 3 4")
  • 显示相同的异常。

标签: java arrays jsp servlets jakarta-ee


【解决方案1】:

你可以试试这个代码:

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]));
        }
    }
}


输出:

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]

【讨论】:

  • 谢谢@prasad_ 作为您的建议,我做了编码部分并在下面回答。
【解决方案2】:

最后,一切正常。 这将接受字符串数组,然后将其转换为整数并将其存储在数组中。

    <%@ 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>

唯一的问题是,它不是以矩阵格式打印的。任何建议都被接受。

【讨论】:

  • 您可以使用 (1) HTML table 与行和列来打印矩阵,以及 (2) JSP JSTL forEach 标签到从数组打印。搜索网络以获取一些如何单独使用它们的示例。
  • 看到这个帖子:Print 2d Array in HTML Table.
  • 是的,当然。但这对我的项目来说不是必需的。我将这个二维数组作为我的 Java 代码的输入,用于解决旅行推销员问题。谢谢你指导我。
【解决方案3】:

你错过了一些东西。打印完一行后,需要移动到下一行。

for(int i=0; i<array2d.length;i++) {
  for(int j=0; j<array2d[i].length;j++) {
    out.print(array2d[i][j]+" ");
  } out.println();
}

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多