定义并初始化数组以存储一定量的字符并将其显示为输出

时间:2015-08-28 07:17:37

标签: arrays char java.util.scanner

所以我的主要目标是: 写一行代码,使我能够保存一定数量的字符(本例中是我试过的5个)以及如何将它们显示为输出,这是我目前所处的位置:

public class TryingCharArrays
{
    public static void main(String[]args)
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("Write 5 characters / symbols: ");
        char[] simbolet = new char[5];
        simbolet = sc.nextChar();    // obvsiously this does not work 'sc.nextChar(); ' however I have no idea on how to write it correctly
        simbolet.toString();

        System.out.println(Arrays.toString(simbolet));
    }
}

我知道定义char数组的第一行是正确的(至少据我所知):

char[] simbolet2 = new char[5];

但是我不知道如何在数组中获取用户输入和存储,我也不能做nextChar(); ti将它们显示为输出。

所以会喜欢一些帮助/提示。 提前致谢

2 个答案:

答案 0 :(得分:0)

您可以从Scanner.next获取第一个字符:

char c = reader.next().charAt(0);

只使用一个可以使用的角色:

char c = reader.findInLine(".").charAt(0);

严格使用您可以使用的一个字符:

char c = reader.next(".").charAt(0);

所以你可以像这样转换你的代码: -

Scanner sc = new Scanner(System.in);
        System.out.println("Write 5 characters / symbols: ");
        char[] simbolet = new char[5];
        simbolet[0] = (char)sc.next().charAt(0);
        simbolet[1] = (char)sc.next().charAt(0);
        simbolet[2] = (char)sc.next().charAt(0);
        simbolet[3] = (char)sc.next().charAt(0);
        simbolet[4] = (char)sc.next().charAt(0);
        simbolet.toString();
        System.out.println(Arrays.toString(simbolet));

答案 1 :(得分:0)

您可以将整个输入读作字符串并将其转换为toCharArray()

在你的情况下,我会将输入作为String读取,然后将其转换为数组。在这种情况下,您不需要任何循环。

顺便说一下,行simbolet.toString();没有用,因为toString()方法返回一个新的String,并且不会将simbolet中存储的原始字符串转换为字符串。

根据评论

更新

如果你想实现填充数组的5个字符,我不明白为什么你要求输出中有3个字符......但是没关系。

您可以通过两种方式完成此操作。一次是将整个字符串读取为一次并将其转换为字符数组:

Scanner sc = new Scanner(System.in);
System.out.println("Shkruani 3 karaktere / simbole: "); 
char[] simbolet = sc.nextLine().toCharArray();

在这种情况下,simbolet数组的长度取决于输入的长度。它可以更短,等于或长于5个字符。如果用户提供的输入较少,您可以添加验证并重复请求。

Scanner sc = new Scanner(System.in);
System.out.println("Shkruani 3 karaktere / simbole: "); 
char[] simbolet = sc.nextLine().substring(0,5).toCharArray();

在这种情况下,如果输入短于5,你当然会得到例外。

如果您想读取一行并且只获得前五个符号,则可以使用子字符串:

如果您想从用户那里获得5个字符,请使用循环。但是在循环之外声明simbolet数组,否则您将丢失先前输入的输入:

int end = 5; 
Scanner sc = new Scanner(System.in);
char[] simbolet = new char[end]; 
for(int i = 0; i < end; i++) { 
    System.out.println("Enter 1 character or symbol: "); 
    simbolet[i] = sc.nextLine().charAt(0); 
    System.out.println(simbolet);
}
sc.close();

或者您可以将两种方法结合起来:

    int end = 5;
    Scanner sc = new Scanner(System.in);
    char[] simbolet = new char[end];
    System.out.println("Enter the symbols: ");
    String input = sc.nextLine();
    for (int i = 0; i < end && i < input.length(); i++) {
        simbolet[i] = input.charAt(i);
    }
    System.out.println(simbolet);
    sc.close();