2013-04-10 15 views
0

給予了該方向: 編寫提示和接受文本的來自用戶的線,然後與每個字符打印出來的小寫除外後立即都是字符的程序空間。這些字符將被大寫。資本Java程序

注意:不要分割字符串

  • 接受來自用戶的字符串
  • 打開所有字符空格後爲小寫
  • 通過一個個字符分別去和把握人物

我的當前編號:

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防守GHIJ 的所有文字小寫行是:ABCABC 文本的新文本行:農行

這不是我想得到的結果是輸出。 我想把「aBc DeF GHIJ」取出所有的小寫字母「abc def ghij」,新的文本行是「Abc Def Ghij」

有人可以幫我弄清楚我在哪裏我的代碼出錯了?以及如何解決它。

+2

在Java中,單引號是字符,雙引號是字符串。 – 2013-04-10 00:45:47

+1

請注意,請遵循Java編碼慣例,使用camelCase作爲變量名稱。 – nhahtdh 2013-04-10 00:47:22

+1

@nhahtdh - 對大寫程序的一個諷刺意見;-) – jahroy 2013-04-10 00:49:24

回答

2

你要比較一個char與文字String" "

if(Letter != " ") 
    char  String 

更改空白的文字字符' '

if(Letter != ' ') 

Primitive Data Types

Character and String Literals

Always use 'single quotes' for char literals and "double quotes" for String literals.

2

變化

Letter != " " 

Letter != ' ' 

雙引號是字符串和單引號是字符。

你也可以這樣做:

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

這些都是ASCII values空間。

+0

我改變了,但現在得到的錯誤:全部小寫的文本行是:線程「main」中的aBcException java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:-1 \t在java.lang.String.charAt(String.java:658) \t在Capitalize.main(Capitalize.java:16) ---- jGRASP wedge2:用於處理退出代碼爲1。 – user2157845 2013-04-10 01:16:07

+0

你的問題在這裏:'for(int i = 0; i 2013-04-10 01:18:23

+0

謝謝,這是有道理的,但我對實際的代碼部分有點困惑,我認爲我有正確的邏輯進行,但得到了一個完全錯誤的輸出,任何幫助將是非常大的應用程序reciated – user2157845 2013-04-10 02:12:59

1

看來你已經將Letter定義爲字符。使用雙引號(「」)表示一個字符串。單引號('')表示一個字符。因此,改變if(Letter != " ")if(Letter != ' ')

+0

我的問題是,我認爲這是它是什麼,但改變,我仍然在我的程序中得到錯誤。線程「main」異常java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:-1 \t at java.lang.String.charAt(String.java:658) \t at Capitalize.main(Capitalize.java:16) – user2157845 2013-04-10 01:17:47

+0

'char Letter = TextLine.charAt(i-1)':在第一次迭代時,i是0.所以i-1是-1,這是一個無效索引。 – drewmoore 2013-04-10 01:20:10

+0

謝謝我沒有意識到我正試圖從那些不在那裏的東西開始。我有點困惑於實際的代碼部分。我認爲我有正確的邏輯,但我得到了一個完全錯誤的結果。任何幫助將不勝感激 – user2157845 2013-04-10 02:13:59

1

你是一個char比較字符串。基本類型到對象。

更改你的代碼 如果(信!='「)