char替换(不使用替换)
这段代码是一系列任务,首先是它将句子中的所有'F'替换为'f'而不使用.replace()方法。我做了什么,之后我应该把所有'f'换成空白,我完成了这些,但由于某种原因,我所有的资本'F都变成了一个奇怪的方块。有任何想法吗?我知道这是基本的代码,但婴儿的步骤。char替换(不使用替换)
这里是我的奇怪输出:“有一个名叫[] isher的isherman,他在某个事件中被清除或者有一些ish;直到一个咧嘴笑起来,把这个isherman拉进来。是她。”
谢谢!抢。
public static void main(String[] args) {
// orginal string sentence
String sentence = ("There was a fisherman named Fisher who fished for some fish in a fissure; till a fish with a grin, pulled the fisherman in. Now they’re fishing the fissure for Fisher. ");
// data
char[] originalArray = sentence.toCharArray();
int i = 0;
int sLength = sentence.length();
int positionArray[];
// combining an int to the array position
positionArray = new int[sLength];
/* while loop to check the position of any 'F' or 'f' characters in sentence and identifying it's array position*/
while (i < sLength) {
char charAt = sentence.charAt(i);
if (charAt == 'F') {
originalArray[i] = 0;
positionArray[i] = 1;
}
i++;
}
//redeclaring int i to 0 for the new array
i = 0;
//reassigning the character 'F' or 'f' to just 'f to 'sentence'
sentence = new String(originalArray);
char[] newArray = sentence.toCharArray();
while (i < sLength) {
if (positionArray[i] == 1) {
newArray[i] = 'f';
}
i++;
//redeclaring int i to 0 for the (part e)
i = 0;
//removing every occurance of 'f' (part e)
while (i < sLength) {
if (newArray[i] == 'f' ) {
newArray[i] = ' ';
}
i++;
//printing to console
}
sentence = new String(newArray);
System.out.println(sentence);
}
}
下面是使用Java 8.它使用一个事实,即一个String是CharSequence,以及是否可以得到的或者在它的字符或码点的IntStream的溶液;该解决方案采用chars:
// Turn all 'F's into 'f's
private int bigFToSmallF(final int inputChar)
{
return 'F' == inputChar ? 'f' : inputChar;
}
// Turn all 'f's into '0's
private int smallFToZero(final int inputChar)
{
return 'f' == inputChar ? '0' : inputChar;
}
private String anyFToZeroes(final String input)
{
final StringBuilder sb = new StringBuilder(input.length());
input.chars().map(this::bigFToSmallF).map(this::smallFToZero)
.forEach(sb::appendCodePoint);
return sb.toString();
}
插件的代码为main
就大功告成了。
你真了不起,我会仔细研究,我真的不能够感谢你! – Napstur
对我来说没有错误。在win cmd和eclipse中运行良好。前段时间我有类似的问题。对我来说,问题在于我安装的字体出现错误。只是一些Win更新已经结束了一些事情,不知道为什么。我手动重新安装我的标准字体后,一切正常。此外,这个问题也是在“空间”内。当我在调试视图中检查十六进制值时,该值稍微偏离,因此显示了不同的字符。
检查您的代码缩进。 你的想法是正确的,虽然没有优化。
你已经实现了3个循环,但最后一个循环是内循环。 我想你想实现3'独立'循环,检查括号内的位置。
我对实际输出道歉的是:“有一个名叫[] isher的isherman,他在某个事件中流露出了某种东西;直到一个笑容把他们拉进去。现在他们正在抨击事件或[]是她。” – Napstur
相应地编辑你的问题,你可以这样做;此外,Java版本是什么? – fge
不清楚你为什么需要'positionArray'。只需在'char []'中直接替换字符即可。 –