我编写了一个程序,应该以某种方式打印输入。现在我使用逗号来分割输入。但是,输入列表以这种形式提供给我:
10.10.4.0-24
10.100.0.0-16
10.102.0.0-16
10.106.0.0-20
10.117.0.0-16
10.118.0.0-16
10.15.128.0-24
而且这个列表也更长。我只是在它们之间插入逗号并将它们放在同一行,但这非常乏味。我尝试使用 String rawdata[]=raw.split("");
而不是 String rawdata[]=raw.split(",");
但它没有按照我的意思工作。它不是为每个输入打印所需的输出,而是像这样打印:
Enter ip addresses separated by commas, no spaces(e.g. 10.105.128.0-19,10.120.192.0-22).
10.10.4.0-24
10.100.0.0-16
10.102.0.0-16
10.106.0.0-20
10.117.0.0-16
10.118.0.0-16
set network virtual-router VR-TZ7 routing-table ip static-route 10.118.0.0-16-TSA_TZ nexthop ip-address 10.22.238.99
set network virtual-router VR-TZ7 routing-table ip static-route 10.118.0.0-16-TSA_TZ interface ethernet1/7
set network virtual-router VR-TZ7 routing-table ip static-route 10.118.0.0-16-TSA_TZ metric 10
set network virtual-router VR-TZ7 routing-table ip static-route 10.118.0.0-16-TSA_TZ admin-dist 10
set network virtual-router VR-TZ7 routing-table ip static-route 10.118.0.0-16-TSA_TZ destination 10.118.0.0/16
我的程序中是否可以使用一个分隔符来处理这种格式的数字?
我的程序如下:
import java.util.Scanner;
public class POPprogTSA
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
System.out.println("Enter ip addresses separated by commas, no spaces(e.g. 10.105.128.0-19,10.120.192.0-22).");
String raw= s.nextLine();
String rawdata[]=raw.split(",");
/*set network virtual-router VR-TZ7 routing-table ip static-route 10.10.4.0-24-TSA_TZ nexthop ip-address 10.22.238.99
set network virtual-router VR-TZ7 routing-table ip static-route 10.10.4.0-24-TSA_TZ interface ethernet1/7
set network virtual-router VR-TZ7 routing-table ip static-route 10.10.4.0-24-TSA_TZ metric 10
set network virtual-router VR-TZ7 routing-table ip static-route 10.10.4.0-24-TSA_TZ admin-dist 10
set network virtual-router VR-TZ7 routing-table ip static-route 10.10.4.0-24-TSA_TZ destination 10.10.4.0/24
*/
//TSA
for (int i = 0; i<= rawdata.length-1; i++)
{
System.out.println("set network virtual-router VR-TZ7 routing-table ip static-route " + rawdata[i] + "-TSA_TZ nexthop ip-address 10.22.238.99");
System.out.println("set network virtual-router VR-TZ7 routing-table ip static-route " + rawdata[i] + "-TSA_TZ interface ethernet1/7");
System.out.println("set network virtual-router VR-TZ7 routing-table ip static-route " + rawdata[i] + "-TSA_TZ metric 10");
System.out.println("set network virtual-router VR-TZ7 routing-table ip static-route " + rawdata[i] + "-TSA_TZ admin-dist 10");
System.out.println("set network virtual-router VR-TZ7 routing-table ip static-route " + rawdata[i] + "-TSA_TZ destination " +(rawdata[i].replace("-","/")));
System.out.println(" ");
}
}
}
每个数字的结果应该采用以下形式:
set network virtual-router VR-TZ7 routing-table ip static-route 10.10.4.0-24-TSA_TZ nexthop ip-address 10.22.238.99
set network virtual-router VR-TZ7 routing-table ip static-route 10.10.4.0-24-TSA_TZ interface ethernet1/7
set network virtual-router VR-TZ7 routing-table ip static-route 10.10.4.0-24-TSA_TZ metric 10
set network virtual-router VR-TZ7 routing-table ip static-route 10.10.4.0-24-TSA_TZ admin-dist 10
set network virtual-router VR-TZ7 routing-table ip static-route 10.10.4.0-24-TSA_TZ destination 10.10.4.0/24
如有任何建议,我们将不胜感激!
最佳答案
一种选择是让用户一次输入一个输入,但不断提示他们(使用 nextLine()
进行阅读),直到输入“end”一词。然后,您可以复制行分隔列表并将其粘贴到控制台中;在末尾输入“end”。
或者,如果您希望用户能够将一堆内容复制并粘贴到一行中,您可以使用 .split("[\\s]+")
来允许 条目之间任意数量的空格(包括换行符;尽管 nextLine()
无论如何都会吃掉换行符)。
另一个选项是将列表存储在文本文件中。然后您可以提示用户输入要导入的文件的名称。然后您可以打开该文件并逐行读取它。
关于java - 输入数据时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22419312/