Java 整数输入解析器不工作
Java input parser for integers not working
我正在研究解析整数。我为我的程序提供一行整数。删除所有空格。那么逻辑是这样的:
If I get a 0,
If the next char is 1,
Print out a 0
If the next char is 0,
Print out a 1
Forget the 2 chars I just checked
If I get a 1,
If the next char is 0,
Print out a 1
If the next char is 1,
print out a 0
Forget the 2 chars I just checked
所以输入 10100 1011011 00,我应该得到 1100101。这是我目前的代码:
import java.util.Scanner;
public class Blah {
public static void main (String args[]) {
Scanner input = new Scanner(System.in);
String text = input.nextLine();
int i;
for (i = 0; i < text.length(); i++) {
if (text.charAt(i) == '0') {
if (text.charAt(i++) == '1') {
System.out.print("0");
} else if (text.charAt(i++) == '0') {
System.out.print("1");
}
if (i < text.length())
i++;
} else {
if (text.charAt(i++) == '0') {
System.out.print("1");
i++;
} else if (text.charAt(i++) == '1') {
System.out.print("0");
}
if (i < text.length())
i++;
}
}
}
}
然而,这并没有给我预期的结果。请帮忙。谢谢。
您应该使用 i+1
或 ++i
而不是 i++
因为这意味着它将使用当前值然后递增 i
,而不是您想要的行为获取下一个值。
编辑:已更新以显示代码中的更改
int i;
for (i = 0; i < text.length(); i++) {
if (text.charAt(i) == '0') {
if (text.charAt(++i) == '1') {
System.out.print("0");
} else if (text.charAt(++i) == '0') {
System.out.print("1");
}
if (i < text.length()) {
i++;
}
} else {
if (text.charAt(++1) == '0') {
System.out.print("1");
i++;
} else if (text.charAt(++i) == '1') {
System.out.print("0");
}
if (i < text.length()) {
i++;
}
}
}
我会将您的增量更改为 i+=2
并删除其他地方 i
增量。也使用 i+1
来检查下一个字符,而不是 i++
。在进入循环之前使用正则表达式去除所有空格。
Scanner input = new Scanner(System.in);
String text = input.nextLine();
text=text.replaceAll("\s+","");
int i;
for (i = 0; i < text.length()-1; i+=2) {
if (text.charAt(i) == '0') {
if (text.charAt(i+1) == '1')
System.out.print("0");
else if (text.charAt(i+1) == '0') {
System.out.print("1");
} else {
if (text.charAt(i+1) == '0')
System.out.print("1");
else if (text.charAt(i+1) == '1')
System.out.print("0");
}
}
我正在研究解析整数。我为我的程序提供一行整数。删除所有空格。那么逻辑是这样的:
If I get a 0,
If the next char is 1,
Print out a 0
If the next char is 0,
Print out a 1
Forget the 2 chars I just checked
If I get a 1,
If the next char is 0,
Print out a 1
If the next char is 1,
print out a 0
Forget the 2 chars I just checked
所以输入 10100 1011011 00,我应该得到 1100101。这是我目前的代码:
import java.util.Scanner;
public class Blah {
public static void main (String args[]) {
Scanner input = new Scanner(System.in);
String text = input.nextLine();
int i;
for (i = 0; i < text.length(); i++) {
if (text.charAt(i) == '0') {
if (text.charAt(i++) == '1') {
System.out.print("0");
} else if (text.charAt(i++) == '0') {
System.out.print("1");
}
if (i < text.length())
i++;
} else {
if (text.charAt(i++) == '0') {
System.out.print("1");
i++;
} else if (text.charAt(i++) == '1') {
System.out.print("0");
}
if (i < text.length())
i++;
}
}
}
}
然而,这并没有给我预期的结果。请帮忙。谢谢。
您应该使用 i+1
或 ++i
而不是 i++
因为这意味着它将使用当前值然后递增 i
,而不是您想要的行为获取下一个值。
编辑:已更新以显示代码中的更改
int i;
for (i = 0; i < text.length(); i++) {
if (text.charAt(i) == '0') {
if (text.charAt(++i) == '1') {
System.out.print("0");
} else if (text.charAt(++i) == '0') {
System.out.print("1");
}
if (i < text.length()) {
i++;
}
} else {
if (text.charAt(++1) == '0') {
System.out.print("1");
i++;
} else if (text.charAt(++i) == '1') {
System.out.print("0");
}
if (i < text.length()) {
i++;
}
}
}
我会将您的增量更改为 i+=2
并删除其他地方 i
增量。也使用 i+1
来检查下一个字符,而不是 i++
。在进入循环之前使用正则表达式去除所有空格。
Scanner input = new Scanner(System.in);
String text = input.nextLine();
text=text.replaceAll("\s+","");
int i;
for (i = 0; i < text.length()-1; i+=2) {
if (text.charAt(i) == '0') {
if (text.charAt(i+1) == '1')
System.out.print("0");
else if (text.charAt(i+1) == '0') {
System.out.print("1");
} else {
if (text.charAt(i+1) == '0')
System.out.print("1");
else if (text.charAt(i+1) == '1')
System.out.print("0");
}
}