gpt4 book ai didi

java - 使用 for 循环和 charAt();以交替大小写的方式打印字符串中的字母

转载 作者:行者123 更新时间:2023-12-02 02:38:32 24 4
gpt4 key购买 nike

import java.util.*;

public class BugFixes
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
altCaps("Computer Science");
}

static void altCaps(String hi)
{
String hi2 = hi;
int locate = 0;
for(int i = 0; i < hi2.length();i++)
{
if((Character.isLetter(hi2.charAt(locate))))
{
if(hi2.charAt(locate) % 2 == 0)
{
System.out.print(hi2.toLowerCase().charAt(locate));
locate++;
}
else if(hi2.charAt(locate) % 2 == 1)
{
System.out.print(hi2.toUpperCase().charAt(locate));
locate++;
}
}
else if(hi2.charAt(locate) == ' ')
{
System.out.print(" ");
locate++;
}
}
}
}

这是我当前实验室遇到的问题之一。我能够修复其他一些错误,但我似乎找不到这个错误。

我的问题是为什么它输出“COMpUtER SCIEnCE”?我不明白这里发生了什么,我已经看了一个小时了。我的目标是输出“CompUtEr ScIeNcE”

我认为 (hi2.charAt(locate) % 2 == 0) 反之亦然会在字符串中的偶数和奇数位置之间交替,但我相信我在某个地方犯了错误。我就是找不到它。

使用BlueJ V3.1.7

1 年高中计算机科学经验,目前就读 AP 计算机科学

有什么建议吗?

最佳答案

不是真的。所以 hi2.charAt(locate) % 2 == 0 实际上是在检查字符的整数值是奇数还是偶数,但是你想实际检查索引是奇数还是偶数,如果我得到你说得对。换句话说:

hi2.charAt(2) % 2 == 0

检查m是奇数还是偶数。但是,我认为您想检查 2 (索引)是奇数还是偶数。我想从这里很容易假设您需要更改:

if(hi2.charAt(locate) % 2 == 0)
//...
else if(hi2.charAt(locate) % 2 == 1)
//...

if(locate % 2 == 0)
//...
else if(locate % 2 == 1)
//...

这不会为您提供您想要的确切输出,但这只是根据您的意愿反转 if 条件或正文的问题。此外,操作 % 2 没有其他情况,这意味着您只能获得奇数或偶数索引,因此您可以通过执行以下操作来简化代码:

if(locate % 2 == 0)
//...
else
//...

哪个读起来更好。希望这有帮助!

关于java - 使用 for 循环和 charAt();以交替大小写的方式打印字符串中的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45874002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com