这个程序采用类似于192.168.1.125的字符串并剪切每个数字然后将其转换为整数,但它会返回错误。
import java.lang.String;
import java.lang.Number;
import java.lang.Integer;
class Ip
{
public static void main ( String [] args )
{
int i ;
i = args[0].indexOf ( '.' );
do
{
if ( i != -1 )
args[0].substring ( 0, i );
String str = args[0].substring ( i + 1, args[0].length() );
String str2 = Integer.parseInt ( str );
System.out.println ( str2 );
}
while ( i != -1 );
}
}
答案 0 :(得分:1)
Integer.parseInt
返回一个整数,而不是一个字符串(它的全部内容是创建一个整数):
String str2 = Integer.parseInt ( str );
注意,编译器发出了错误,你应该试着找出它告诉你的内容:
Ip.java:16: incompatible types
found : int
required: java.lang.String
String str2 = Integer.parseInt ( str );
答案 1 :(得分:1)
parseInt
parseInt
需要String
并返回int
。以下是使用该方法的简单示例:
int num = Integer.parseInt("42");
System.out.println(num == 42); // prints "true"
int parseInt(String s)
s
- 包含要解析的int表示的字符串至于您的问题,最简单的解决方案是使用java.util.Scanner
import java.util.*;
//...
Scanner sc = new Scanner("192.168.1.125").useDelimiter("\\.");
int[] parts = new int[] {
sc.nextInt(), sc.nextInt(), sc.nextInt(), sc.nextInt()
};
System.out.println(Arrays.toString(parts));
// prints "[192, 168, 1, 125]"
唯一不直接的部分是\\.
,这就是你如何在Java中将\.
写成字符串文字。您需要\
的原因是因为useDelimiter
采用正则表达式,而正则表达式中.
是一个元字符,因此您需要将其转义以匹配文字点。
答案 2 :(得分:0)
您丢弃第一个子字符串的结果,并为字符串分配整数(如Klatchko所述)。此外,如果使用for循环,则可以简化,因为IPv4地址始终具有4个组件。这假设您无法使用String.split或类似内容。