Java程序

Java程序,java,Java,给出的指示是: 编写一个程序,提示用户输入并接受一行文本,然后用小写字母打印出来,空格后面的字符除外。这些字符要大写 注意:不要拆分字符串 接受来自用户的字符串 将所有字符转换为小写 逐个检查每个字符,并将空格后的字符大写 我当前的代码: import java.util.Scanner; public class Capitalize { public static void main(String[] args) { Scanner input = new Scanner(Sy

给出的指示是: 编写一个程序,提示用户输入并接受一行文本,然后用小写字母打印出来,空格后面的字符除外。这些字符要大写

注意:不要拆分字符串

  • 接受来自用户的字符串
  • 将所有字符转换为小写
  • 逐个检查每个字符,并将空格后的字符大写
我当前的代码:

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);
    }
}
import java.util.Scanner;
公共阶级资本化
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入一行文本:”);
字符串TextLine=input.next();
//String FirstLetter=input.next();
字符串NewTextLine=“”;
int Length=TextLine.Length();
System.out.print(“文本的全小写行为:“+TextLine”);
for(int i=0;i
输出为:

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

这不是我想要的输出。 我想取“aBc DeF GHIJ”,去掉所有小写字母“aBc DeF GHIJ”,新的文本行是“aBc DeF GHIJ”


有人能帮我找出我的代码哪里出错了吗?以及如何修复它

您正在将
字符
与文本
字符串
进行比较:

按文本字符
''
更改空格

if(Letter != ' ')
发件人:

字符和字符串文本

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


您正在将
字符
与文本
字符串
进行比较:

按文本字符
''
更改空格

if(Letter != ' ')
发件人:

字符和字符串文本

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

改变

Letter != " "

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

你也可以这样做:

Letter != 040  // Octal
Letter != 32   // Integer
Latter != 0x20 // Hexadecimal
这些是空间的最佳选择。

更改

Letter != " "

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

你也可以这样做:

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

这些是空格的缩写。

似乎您已经在某处将字母定义为字符。使用双引号(“”)表示字符串。单引号(“”)表示字符。因此,将
if(Letter!=“”)
更改为
if(Letter!=“”)

似乎您已经在某处将字母定义为字符。使用双引号(“”)表示字符串。单引号(“”)表示字符。因此,将
if(Letter!=“”)
更改为
if(Letter!=“”)
您正在将字符与字符串进行比较。对象的基本类型

将代码更改为
如果(字母!='')

您正在将字符与字符串进行比较。对象的基本类型

将代码更改为

如果(字母!='')

如前所述,您不应该使用
字母!=“
,但您可以使用或,正如前面指出的,您不应该使用
字母!”“”
,但您可以在Java中使用或

,单引号用于字符,双引号用于字符串。作为旁注,请遵循Java编码惯例,使用camelCase作为变量名。@nhahtdh-对大写程序的讽刺建议;-)在Java中,单引号表示字符,双引号表示字符串。作为补充说明,请遵循Java编码惯例,使用camelCase表示变量名。@nhahtdh-对大写程序的讽刺建议;-)我改变了这一点,但现在得到了错误:文本的全小写行是:线程“main”java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1在java.lang.String.charAt(String.java:658)在Capitalize.main(Capitalize.java:16)---jGRASP wedge2:进程的退出代码是1。您的问题是:
(int i=0;i
i==0
时,您正在抓取
charAt(-1)
。谢谢。这是有道理的,但我对实际的代码部分有点困惑。我以为我的逻辑正确,但得到的输出完全错误。任何帮助都将非常感谢使用布尔标志。我刚刚在一分钟前更改了它,但现在得到错误:文本的全小写行是:线程“main”中的abceexceptionjava.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1在java.lang.String.charAt(String.java:658)在Capitalize.main(Capitalize.java:16)---jGRASP wedge2:进程的退出代码是1。您的问题是:
for(int i=0;i
i==0
时,您正在抓取
字符(-1)
。谢谢。这是有道理的,但我对实际的代码部分有点困惑。我原以为我的逻辑正确,但得到的输出完全错误。任何帮助都将非常感谢使用布尔标志。我刚在一分钟前。我的问题是,我以为这就是问题所在,但我的程序仍然会出错。例外n在线程“main”java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1在java.lang.String.charAt(String.java:658)在Capitalize.main(Capitalize.java:16)`char Letter=TextLine.charAt(i-1)`:在第一个位置