0

嗯,我有这个IP列表。

193.137.150.5              368 ms                DANIEL-PC             
193.137.150.7              95 ms                 N/A                   
193.137.150.13             37 ms                 N/A                   
193.137.150.17             33 ms                 N/A                   
193.137.150.24             238 ms                N/A                   
193.137.150.38             74 ms                 DUARTE-PC             
193.137.150.41             26 ms                 N/A                   
193.137.150.52             176 ms                N/A   

我想使用 java 从列表中仅删除 IP。

这是我的代码:

import java.io.*;
import java.util.*;

class trim{

    public static void main(String[] args) throws Exception{
        String s;
        char c;
        int i = 0;
        Scanner in = new Scanner(System.in);

        while (in.hasNextLine()){
            s = in.nextLine();
            c = s.charAt(i);
            while (c != ' '){
                System.out.print(c);
                i++;
                c = s.charAt(i);
            }
            System.out.println();
        }
    }
}

我究竟做错了什么?

4

5 回答 5

3

在您的循环中,您永远不会归零i。这意味着您的偏移量对于第一行之后的每一行都是错误的。

    while (in.hasNextLine()){
        s = in.nextLine();
        c = s.charAt(i);
        while (c != ' '){
            System.out.print(c);
            i++;
            c = s.charAt(i);
        }
        System.out.println();
        i = 0; // Finished with this line
    }
于 2013-04-15T14:52:55.083 回答
2
while (in.hasNextLine()){
    s = in.nextLine();
    String[] arr = s.split(" "); // if delimeter is whitespace use s.split("\\s+")  
    System.out.println(arr[0]);
}
于 2013-04-15T14:54:55.593 回答
1

您可以简单地将字符串拆分一次并打印第二部分

while (in.hasNextLine()){
    s = in.nextLine();
    System.out.println(s.split(" ", 1)[1]);
}
于 2013-04-15T14:53:17.510 回答
0

你没有重新初始化 i,

    while (in.hasNextLine()){
        s = in.nextLine();
        // reset i so you start reading at line begin
        i = 0;
        c = s.charAt(i);
        while (c != ' '){
            System.out.print(c);
            i++;
            c = s.charAt(i);
        }
        System.out.println();
    }

话虽如此,有更简单的方法,例如使用String.split()

于 2013-04-15T14:53:30.883 回答
0

您需要重新初始化 i = 0。您可以在 nextLine 调用之后执行此操作

    s = in.nextLine();
    i = 0;  
于 2013-04-15T14:54:08.367 回答