2016-09-28 16 views
-4

クラス用のコードを作成していますが、エラーを見つけることができません。私はJavaのコードを実行するたびに、これまでに見たことのない約15種類の赤いエラーが発生します。コードは、ユーザーの入力を受け取り、その順序を逆転させるものです。どんな助け?これはコードです:Javaユーザーの名前と逆順

import java.util.Scanner; 
public class LoopsProgram 
{ 
    public static void main (String [] args) 
    { 
     Scanner stringScanner = new Scanner (System.in); 
     System.out.println ("What is your name?"); 

     String nameOfPerson = stringScanner.nextLine(); 
     System.out.println(nameOfPerson); 
     int lengthOfName = nameOfPerson.length(); 
     char beginning = nameOfPerson.charAt(lengthOfName); 
     for (int i = lengthOfName-1; i > 0; i--) { 
      beginning = nameOfPerson.charAt(i); 
      System.out.print(beginning); 
     } 
    } 
} 
+0

このウェブサイトを経由することができます。 http://javahungry.blogspot.com/2014/12/5-ways-to-reverse-string-in-java-with-example.html – halim

+0

スタックオーバーフローへようこそ!このサイトを最大限に活用するために、[SO Question Checklist](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)を読んで、それに応じて質問を再作成してください。 –

答えて

0

char beginning = nameOfPerson.charAt(lengthOfName); - あなたはそれが0からのエラーを得ている理由です。4.にインデックスを持つことになりますと5番目のインデックスにアクセスしようとしています。

コードの下に、これを試してください:

import java.util.Scanner; 
class Test{ 
    public static void main (String [] args) 
    { 
     Scanner stringScanner = new Scanner (System.in); 
     System.out.println ("What is your name?"); 

     String nameOfPerson = stringScanner.nextLine(); 
     System.out.println("Name : "+nameOfPerson+" & length : "+nameOfPerson.length()); 
     int lengthOfName = nameOfPerson.length(); 
     String result = ""; 
     for (int i = lengthOfName-1; i >= 0; i--) { 
      result+=nameOfPerson.charAt(i); 
     } 
     System.out.println(result); 
    } 
} 
0
  1. チャー開始= nameOfPerson.charAt(lengthOfName)を、

  2. ための(int型I = lengthOfName-1; I> 0; i--)は、Javaの指標で

は0から始まるので、最後の文字のインデックスはlengthOfName-1になります。 Issue 1

Forループには条件(i> 0)があるため、インデックスゼロの文字は含まれません。それはi> = 0でなければなりません。 第2号

+0

@halim、男は根本的な原因を期待しています(私は思います)。 –