java хранит строку в массиве char - PullRequest
1 голос
/ 07 февраля 2012

В Java, как я могу сохранить строку в массиве?Например:

//pseudocode:
name = ayo
string index [1] = a
string index [2] = y
string index [3] = o

Тогда как я могу получить длину строки?

// this code doesn't work
String[] timestamp = new String[40]; String name;
System.out.println("Pls enter a name and surname");
Scanner sc = new Scanner(System.in);
name = sc.nextLine();
name=timestamp.substring(0, 20);

Ответы [ 4 ]

2 голосов
/ 07 февраля 2012

Если вы хотите, чтобы массив символов содержал каждый символ строки в каждом (или почти в каждом индексе), то вы можете сделать это:

char[] tmp = new char[length];
for (int i = 0; i < length; i++) {
    tmp[i] = name.charAt(i);
}

Где length от 0 до name.length.

1 голос
/ 07 февраля 2012

Этот код не компилируется, потому что метод подстроки можно вызывать только для строки, а не для массива строк, если я не ошибаюсь. В приведенном выше коде отметка времени объявляется как массив строк с 40 индексами.

Также в этом коде вы запрашиваете ввод данных у пользователя и присваиваете ему имя в этой строке:

name = sc.nextLine();

и затем вы пытаетесь заменить то, что пользователь только что набрал, на то, что хранится в метке времени в следующей строке, которая является ничем, и стирает все, что было сохранено в имени:

name = timestamp.substring(0,20);

И снова это не сработало бы, потому что отметка времени представляет собой массив из 40 строк вместо одной конкретной строки. Для вызова подстроки это должна быть только одна конкретная строка.

Я знаю, что, вероятно, не очень помогает то, что вы пытаетесь сделать, но, надеюсь, это поможет вам понять, почему это не работает.

Если вы можете ответить тем, что вы пытаетесь сделать, с конкретным примером, я могу помочь вам в дальнейшем. Например, допустим, вы хотели, чтобы пользователь ввел свое имя «Джон Смит», а затем вы хотели разделить это имя и фамилию на две разные строковые переменные или массив строк. Чем конкретнее вы можете быть с тем, что хотите сделать, тем лучше. Удачи:)

НАЧАТЬ РЕДАКТИРОВАТЬ

Хорошо, вот несколько вещей, которые вы можете попробовать, если я правильно понимаю, что вы делаете.

//Since each index will only be holding one character, 
//it makes sense to use char array instead of a string array.
//This next line creates a char array with 40 empty indexes.
char[] timestamp = new char[40];

//The variable name to store user input as a string. 
String name;

//message to user to input name  
System.out.println("Pls enter a name and surname");

//Create a scanner to get input from keyboard, and store user input in the name variable  
Scanner sc = new Scanner(System.in);  
name = sc.nextLine();

//if you wanted the length of the char array to be the same
//as the characters in name, it would make more sense to declare it here like this
//instead of declaring it above.
char[] timestamp = new char[name.length()];


//For loop, loops through each character in the string and stores in
//indexes of timestamp char array. 
for(int i=0; i<name.length;i++)
{
    timestamp[i] = name.charAt(i);
}

Еще одна вещь, которую вы могли бы сделать, если бы хотели разделить имя и фамилию, это разделить ее следующим образом.

String[] seperateName = name.split(" ");

Эта строка разделит строку, когда найдет пробел, и поместит ее в индекс в массиве seperateName. Поэтому, если имя было «Джон Смит», sperateName [0] = Джон и seperateName [1] = Смит.

0 голосов
/ 24 апреля 2015

Java, подстрока массива:

Использовать Arrays.copyOfRange:

public static <T> T[] copyOfRange(T[] original,
                                  int from,
                                  int to)

Например:

import java.util.*;
public class Main{
    public static void main(String args[]){
        String[] words = new String[3];
        words[0] = "rico";
        words[1] = "skipper";
        words[2] = "kowalski";

        for(String word : words){
            System.out.println(word);
        }   
        System.out.println("---");

        words = Arrays.copyOfRange(words, 1, words.length);
        for(String word : words){
            System.out.println(word);
        }   
    }   
}

Отпечатки:

rico
skipper
kowalski
---
skipper
kowalski

Еще одно сообщение о переполнении стека, более подробное: https://stackoverflow.com/a/6597591/445131

0 голосов
/ 07 февраля 2012

Вы ищете char[]? Вы можете преобразовать массив символов в строку, используя String.copyValueOf(char[]).

...