当前位置: 首页 > 知识库问答 >
问题:

Java 将字符替换为字符

岳阳文
2023-03-14

我正在自己学习Java,并使用在线练习进行练习。到目前为止,我只学到了直到方法,所以在这个练习中使用数组超出了我的范围,即使一些在线解决方案使用数组来做我想做的事情。

练习是这样的:让用户输入一个带有元音的字符串。只要有元音字母,就将该元音显示为大写字母。

例如:如果用户输入“苹果”,正确的输出是苹果

到目前为止,我有这段代码:

import java.util.Scanner;

public class CapitalizeVowels {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        System.out.print("Enter a string ~ ");
        String string = keyboard.nextLine();

        for (int i = 0; i < string.length(); i++) {
            System.out.print(string.charAt(i));
            if (string.charAt(i) == 'a' || 
                string.charAt(i) == 'e' || 
                string.charAt(i) == 'i' || 
                string.charAt(i) == 'o' || 
                string.charAt(i) == 'u') {

                char upperCaseVowel = Character.toUpperCase(string.charAt(i));
                System.out.print(upperCaseVowel);

                // need to replace string.charAt(i) with upperCaseVowel
                // find something to replace characters
            }
        }
    }
}

当我运行我的代码时,例如,输入字符串“苹果”,我得到“苹果”作为我的输出。小写元音和大写元音都被打印出来。我想我应该用大写元音替换string.charat(i),这是小写元音,但是我找不到任何替换()方法或类似的字符。我尝试了其他东西,如StringBuilder等。但是我还没有遇到一个足够简单的解决方案来避免数组,因为我还没有学习它们。非常感谢关于如何获得正确输出的任何帮助。谢谢!

共有3个答案

姜晨
2023-03-14

试试这个,它对我有用。

class ReplaceVowel {

    public static void main(String[] args) {
        String words = "apples";
        char converted = 0;
        String w = null;
        for (int i = 0; i < words.length(); i++) {
            if (words.charAt(i) =='a'|| words.charAt(i)=='e'||words.charAt(i)=='i'||words.charAt(i)=='o'||words.charAt(i)=='u') {
                converted = Character.toUpperCase(words.charAt(i));
                w = words.replace(words.charAt(i), converted);
                words = w;
                    
            } else {
                converted = Character.toUpperCase(words.charAt(i));
                w = words.replace(words.charAt(i), converted);
                words = w;
            }
        }
        System.out.println(words);
    }
}
宗项禹
2023-03-14

您只需要将if语句之前的Sysout移动到否则,以避免两次打印相同的字符,例如:

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);

    System.out.print("Enter a string ~ ");
    String string = keyboard.nextLine();

    for (int i = 0; i < string.length(); i++) {

        if (string.charAt(i) == 'a' || string.charAt(i) == 'e' || string.charAt(i) == 'i' || string.charAt(i) == 'o'
                || string.charAt(i) == 'u') {

            char upperCaseVowel = Character.toUpperCase(string.charAt(i));
            System.out.print(upperCaseVowel);

            // need to replace string.charAt(i) with upperCaseVowel
            // find something to replace characters
        }else{
            System.out.print(string.charAt(i));
        }
    }
}
吴宝
2023-03-14

你的错误是在测试元音之前打印每个字符。

相反,在弄清楚每个字符应该是什么之后打印它。循环的主体应该是:

char next = string.charAt(i);
if (next == 'a' || 
    next == 'e' || 
    next == 'i' || 
    next == 'o' || 
    next == 'u') {
    next = Character.toUpperCase(next);
}
System.out.print(next);

您可以考虑添加:

else {
    next = Character.toLowerCase(next);
}

强制非元音小写。

 类似资料:
  • 问题内容: 我有一个以字符串形式传递的句子,我正在对单词“ and”进行替换,我想用“”替换它。而且它不是用空格替换“和”一词。以下是我的逻辑示例。而当我调试此逻辑时,逻辑确实落入了句子。 这里有我想念的东西吗? 问题答案: 而当我调试此逻辑时,逻辑确实落入了句子。 是的,然后你放弃返回值。 Java中的字符串是不可变的-当你调用时,它不会更改现有字符串的内容-它会返回经过修改的新字符串。所以你要

  • 我有以下字符串输出: 但是我想在Java中有如下格式的输出 请帮帮我。 我正在将对象转换为json数据。请参见以下代码 我想将此应用于使用java 7的jsonString变量,就像不使用java 8一样

  • 问题内容: 我想从字符串中删除方括号,但我不知道如何。 但是我的结果是:[克里斯曼| 1]方括号不会被删除。 我尝试使用其他正则表达式:, 但结果相同,方括号仍附加在字符串上。 编辑: 我试过了: 现在我得到: 问题答案: replaceAll方法正在尝试匹配尝试单独替换这些项目时不存在的String文字。

  • 主要内容:replace() 方法,replaceFirst() 方法,replaceAll() 方法在 Java 中,String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll(),本文将详细介绍它们的使用方法。 replace() 方法 replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串),其语法格式如下: 其中,oldChar 表示被替换的字符串;newChar 表示用于替换的字符串。repla

  • 我正在尝试将所有数字单词0-9替换为字符串中相应的数字0-9。 我已经创建了数字单词和数字的两个数组,然后尝试使用替换循环来更改句子。 不确定我做错了什么。 我正在引用我的方法。 谢谢

  • 问题内容: 假设我的格式如下: 我想将小数点替换为空白,使其看起来像这样: 我该怎么做呢?我以为可以解决问题,但是当我尝试这样时: 我收到了一个错误消息,因为它可能不是字符。那是有道理的,那么我还能怎么完成我想要的? 问题答案: 如果您只是将单引号换成双引号,那么这将起作用,因为空字符串是合法值,而不是“空字符”,并且有重载。请记住,这是的超类型。