我正在尝试编写一个程序,打印输入的用户字符串,将元音替换为_。由于编译错误,程序无法打印的if部分出现问题。
import java.util.Scanner;
public class mathpowers {
public static void main(String args[])
{
Scanner a = new Scanner (System.in);
System.out.print("Enter string: ");
String s = a.nextLine();
int count = 0;
for (char c : s.toCharArray())
{
if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u') {
{
c = '_';
System.out.println (c[i]);
}
}
System.out.println("Your string has " + count + " upper case letters.");
}
}
答案 0 :(得分:1)
System.out.println(c[i]);
应该是
System.out.println(c);
答案 1 :(得分:1)
您的代码存在许多问题,并且无法编译。
c[i]
替换为c
。 c
是char
,而非String
。 (你甚至没有i
... )count
,但您永远不会增加它。count
,您也会在打印时计算元音而不是大写字母。"_"
分配给c
并打印,您的输出将始终为_
。也许你想做这样的事情:
Scanner a = new Scanner (System.in);
System.out.print("Enter string: ");
String s = a.nextLine();
String res = "";
for (char c : s.toCharArray())
{
if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u') {
res = res + '_';
}
else
res = res + c;
}
System.out.println(res); //Will contain the string with the vowels replaced with _
或..更好的代码:
Scanner a = new Scanner (System.in);
System.out.print("Enter string: ");
String s = a.nextLine();
String[] vals = {"a", "u", "o", "e", "i"};
for(String val : vals)
s = s.replaceAll(val, "_");
System.out.println(s);
答案 2 :(得分:0)
首先,您需要在第一行的import
前面加java.util.Scanner;
个关键字。
您还需要在下面的代码中删除额外的{
if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u') {
{ //<- This is not needed as you have another on on the end of the line above
c = '_';
System.out.println (c[i]);
}
}
上面代码中的c
char
不是数组,因此您只需拨打System.out.println (c);
,但您也可以在致电之前将'_'
分配给c,以便您#39; ll只打印出_
。另一个问题是您只更改s.toCharArray()
创建的数组中的值,因此您需要在for循环之前进行此调用,然后在循环之后使用它来创建要分配给{的新字符串{1}}。
最后,你永远不会增加s
,所以你上次打印时总会说0,但我想你以后会解决这个问题。
如果您尚未使用Eclipse或NetBeans等集成开发环境(IDE),我建议您下载一个,因为它会突出显示这些错误,就像文字处理器突出显示拼写错误和语法错误