Java 将字符读入数组

Java 将字符读入数组,java,arrays,input,char,Java,Arrays,Input,Char,我有下面的代码,需要从用户那里获取10个字符,并以相反的顺序打印出来。对于扫描仪,我似乎无法克服这一语法错误。如何一次输入一个字符?以下是我到目前为止的情况: import java.util.Scanner; public class ReverseOrder { //----------------------------------------------------------------- // Reads a list of char from user and pr

我有下面的代码,需要从用户那里获取10个字符,并以相反的顺序打印出来。对于
扫描仪
,我似乎无法克服这一语法错误。如何一次输入一个字符?以下是我到目前为止的情况:

import java.util.Scanner;

public class ReverseOrder
{
   //-----------------------------------------------------------------
   //  Reads a list of char from user and prints in reverse.
   //-----------------------------------------------------------------
   public static void main (String[] args)
   {
      Scanner scan = new Scanner (System.in);

      char[] letters = new char[10];

      System.out.println ("The size of the array: " + letters.length);
      for (int index = 0; index < letters.length; index++)
      {
         System.out.print ("Enter number " + (index+1) + ": ");
         letters[index] = scan.nextchar(); //doesnt like this line
      }

      System.out.println ("The numbers in reverse order:");

      for (int index = letters.length-1; index >= 0; index--)
         System.out.print (letters[index] + "  ");
   }
}
import java.util.Scanner;
公共类反向序
{
//-----------------------------------------------------------------
//从用户处读取字符列表并反向打印。
//-----------------------------------------------------------------
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
字符[]个字母=新字符[10];
System.out.println(“数组的大小:“+字母.长度”);
for(int index=0;index=0;index--)
System.out.print(字母[索引]+“”);
}
}

不幸的是,
nextChar()
不是一种方法。这可以使用
next().字符(0)
来解决

public class ReverseOrder
{
    //-----------------------------------------------------------------
    //  Reads a list of char from user and prints in reverse.
    //-----------------------------------------------------------------
    public static void main (String[] args)
    {
      Scanner scan = new Scanner (System.in);

      char[] letters = new char[10];

      System.out.println ("The size of the array: " + letters.length);
      for (int index = 0; index < letters.length; index++)
      {
         System.out.print ("Enter number " + (index+1) + ": ");
         letters[index] = scan.next().charAt(0);

      }

      System.out.println ("The numbers in reverse order:");

      for (int index = letters.length-1; index >= 0; index--)
         System.out.print (letters[index] + "  ");
    }
}
公共类反转顺序
{
//-----------------------------------------------------------------
//从用户处读取字符列表并反向打印。
//-----------------------------------------------------------------
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
字符[]个字母=新字符[10];
System.out.println(“数组的大小:“+字母.长度”);
for(int index=0;index=0;index--)
System.out.print(字母[索引]+“”);
}
}

不幸的是,
nextChar()
不是一种方法。这可以使用
next().字符(0)
来解决

public class ReverseOrder
{
    //-----------------------------------------------------------------
    //  Reads a list of char from user and prints in reverse.
    //-----------------------------------------------------------------
    public static void main (String[] args)
    {
      Scanner scan = new Scanner (System.in);

      char[] letters = new char[10];

      System.out.println ("The size of the array: " + letters.length);
      for (int index = 0; index < letters.length; index++)
      {
         System.out.print ("Enter number " + (index+1) + ": ");
         letters[index] = scan.next().charAt(0);

      }

      System.out.println ("The numbers in reverse order:");

      for (int index = letters.length-1; index >= 0; index--)
         System.out.print (letters[index] + "  ");
    }
}
公共类反转顺序
{
//-----------------------------------------------------------------
//从用户处读取字符列表并反向打印。
//-----------------------------------------------------------------
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
字符[]个字母=新字符[10];
System.out.println(“数组的大小:“+字母.长度”);
for(int index=0;index=0;index--)
System.out.print(字母[索引]+“”);
}
}

您可以在您的案例中使用:

letters[index] = scan.nextLine().charAt(0);

作为scan.nextchar()的替代品

您可以在您的案例中使用:

letters[index] = scan.nextLine().charAt(0);
作为scan.nextchar()的替代品

char c=scan.nextLine().charAt(0);

它必须是charAt(0)而不是charAt(index),因为他总是想要第一个字母。

char c=scan.nextLine().charAt(0);


它必须是charAt(0)而不是charAt(index),因为他总是想要第一个字母。

您也可以按相反顺序打印出来,而无需使用循环:

System.out.println("The numbers in reverse order:");
System.out.println(new StringBuilder(new String(letters)).reverse())

也可以按相反顺序打印,无需使用循环:

System.out.println("The numbers in reverse order:");
System.out.println(new StringBuilder(new String(letters)).reverse())

我如何读入“chars”?如果可以调用>>char c=scan.nextLine().charAt(0),为什么要在“in”中创建字符串@user2664856我刚开始编辑了他的代码,现在更新并简化了它。最终这并不重要,不是吗?所有关于可读性与代码优雅的讨论都在重复;)我不是100%确定,但是每次创建字符串都会消耗一点性能。@user2664856您可能是对的。在这个简单的程序中,我不会真正考虑这个因素。在这种情况下,不应该使用扫描仪,因为它的速度非常慢。当您知道需要什么样的数据时,最好使用BufferedReader等。我如何读取“chars”?如果您可以调用>>char c=scan.nextLine().charAt(0),为什么要在“in”中创建字符串@user2664856我刚开始编辑了他的代码,现在更新并简化了它。最终这并不重要,不是吗?所有关于可读性与代码优雅的讨论都在重复;)我不是100%确定,但是每次创建字符串都会消耗一点性能。@user2664856您可能是对的。在这个简单的程序中,我不会真正考虑这个因素。在这种情况下,不应该使用扫描仪,因为它的速度非常慢。当您知道需要什么样的数据时,最好使用BufferedReader等,就像在本例中一样。另外,请参阅,我已经运行了它。谢谢你和所有人的帮助!请选择您对此问题接受的答案。谢谢,我让它运行起来了。谢谢你和所有人的帮助!请选择您对此问题接受的答案。谢谢,这是一个很好的观点。然而,这不是问题所在。询问者询问如何使用类似于
Scanner.nextChar()
的东西,这是一个很好的观点。然而,这不是问题所在。询问者询问如何使用类似于
Scanner.nextChar()的东西