0

给出的指导是:编写一个程序,提示并接受用户的一行文本,然后将其打印出来,除了紧跟在空格后面的字符外,每个字符都小写。这些字符要大写。

注意:不要拆分字符串

  • 接受来自用户的字符串
  • 将所有字符转为小写
  • 单独遍历每个字符并将空格后面的字符大写

我当前的代码:

import java.util.Scanner;

public class Capitalize
{
public static void main(String[] args)
{
    Scanner input = new Scanner(System.in);
    System.out.print("Enter a line of text:");
    String TextLine = input.next();
    //String FirstLetter = input.next();
    String NewTextLine = " ";
    int Length = TextLine.length();
    System.out.print("The all lower case line of text is: " + TextLine);
    for(int i = 0; i < Length; i++)
    {
        char Letter = TextLine.charAt(i);
        System.out.print(Letter);
        if(Letter != ' ') 
        {
            Letter = Character.toLowerCase(TextLine.charAt(i));
        }
        else
        {
            Letter = Character.toUpperCase(TextLine.charAt(i));
        } 
        NewTextLine = NewTextLine + Letter;
        }
        System.out.print("\nThe new text line of text is: " + NewTextLine);
    }
}

输出是:

输入一行文本:aBc Def GHIJ 全小写的文本行是:aBcaBc 新的文本行是:abc

这不是我想要的输出。我想采用“ aBc DeF GHIJ ”并输出所有小写字母“ abc def ghij ”,并将新文本行设为“ Abc Def Ghij ”

有人可以帮我弄清楚我的代码哪里出错了吗?以及如何解决它。

4

5 回答 5

2

您正在将 achar与文字进行比较String " "

if(Letter != " ")
   char      String

通过文字字符更改空格' '

if(Letter != ' ')

原始数据类型

字符和字符串文字

始终对字符文字使用“单引号”,对字符串文字使用“双引号”。

于 2013-04-10T00:45:03.747 回答
2

改变

Letter != " "

Letter != ' '

双引号用于字符串,单引号用于字符。

你也可以这样做:

Letter != 040  // Octal
Letter != 32   // Integer
Latter != 0x20 // Hexadecimal

这些是 Space 的ASCII 值

于 2013-04-10T00:46:10.500 回答
1

似乎您已在某处将 Letter 定义为 char 。使用双引号 (" ") 表示字符串。单引号 (' ' ) 表示一个字符。所以,if(Letter != " ")改为if(Letter != ' ')

于 2013-04-10T00:46:32.450 回答
1

您正在将 char 与字符串进行比较。对象的原始类型。

将您的代码更改为 if(Letter != ' ')

于 2013-04-10T00:46:38.027 回答
0

正如已经指出的那样,您不应该使用Letter != " ",而是可以使用Character.isSpaceChar(Letter)orCharater.isWhiteSpace(Letter)

于 2013-04-10T01:00:16.257 回答