2016-06-11 4 views
0

Я занимаюсь с this question.Golang: Как преобразовать строку в [] int?

Мне нужно преобразовать строки в int. В этом случае мне нужно преобразовать «5 2 4 6 1 3», например, в [6] int {5,2,4,6,1,3}. Я написал следующий этот код, особенно AizuArray(). Кажется, что элементы int here. Не могли бы вы сообщить мне, если мой путь верен? Или вы могли бы сообщить мне лучшие способы? Я спрашиваю об этом, потому что я чувствую, что мой путь будет лишним, и Java way намного проще. Спасибо.

package main 

import (
    "fmt" 
    "reflect" 
    "strconv" 
    "strings" 
) 

func AizuArray(A string, N string) []int { 
    a := strings.Split(A, " ") 
    n, _ := strconv.Atoi(N) // int 32bit 
    b := make([]int, n) 
    for i, v := range a { 
     b[i], _ = strconv.Atoi(v) 
    } 
    return b 
} 

func main() { 
    A := "5 2 4 6 1 3" 
    N := "6" 
    j := strings.Split(A, " ") 
    for _, v := range j { 
     fmt.Println(reflect.TypeOf(v)) 
    } 
    b := AizuArray(A, N) 
    fmt.Println(b) 
    for _, v := range b { 
     fmt.Println(reflect.TypeOf(v)) 
    } 
} 
+1

Имейте в виду, что Int размер в пути зависит от центрального процессора, это 32-битный на 32-битных процессоров и 64-битной на ну, 64-битные процессоры. – OneOfOne

+0

@OneOfOne Благодарим вас за комментарий. Да, когда я использовал 'ParseInt()', в моем нетбуке произошла ошибка. Таким образом, я использовал «Atoi» вместо этого. – yamachan

ответ

3

пожалуйста дайте мне знать, если мой путь является правильным?

Если вы просто хотите преобразовать строку (разделенных пробелом целых чисел) на [] INT

func AizuArray(A string, N string) []int { 
a := strings.Split(A, " ") 
n, _ := strconv.Atoi(N) // int 32bit 
b := make([]int, n) 
for i, v := range a { 
    b[i], err = strconv.Atoi(v) 
    if err != nil { 
     //proper err handling 
     //either b[i] = -1 (in case positive integers) 
    } 
} 
return b 
} 

тогда ваш подход является правильным.

Я занимаюсь этим вопросом.

В контексте этого question вы хотите принять вход от STDIN так должен делать,

package main 

import (
    "fmt" 
) 

func insertionSort(arr []int) { 
    //do further processing here. 
    fmt.Println(arr) 
} 

func main() { 
    var N int 
    fmt.Scanf("%d", &N) 
    b := make([]int, N) 
    for iter:=0;iter<N;iter++ { 
     fmt.Scanf("%d",&b[iter]) 
    } 
    insertionSort(b) 
} 
+0

Благодарим вас за ответ. О, я напишу об ошибке позже. Благодарю. И спасибо за ваш следующий. Ах, я попробую 'fmt.Scanf'. Огромное спасибо. – yamachan

+0

А, это 'fmt.Scanf()' лучше, чем 'сканер = bufio.NewScanner (os.Stdin); scanner.Scan(); N: = scanner.Text() '? – yamachan

+1

, поэтому, если вы хотите получить более быстрый ввод, http://stackoverflow.com/questions/31333353/faster-input-scanning, посмотрите на это. –

0

Я думаю, что вы чрезмерны, если мне не хватает чего-то.

https://play.golang.org/p/HLvV8R1Ux-

package main 

import (
    "fmt" 
    "strings" 
    "strconv" 
) 

func main() { 
    A := "5 2 4 6 1 3" 

    strs := strings.Split(A, " ") 
    ary := make([]int, len(strs)) 
    for i := range ary { 
     ary[i], _ = strconv.Atoi(strs[i]) 
    } 

    fmt.Println(ary)  
} 
+1

Я отказался от вашего ответа, потому что я думаю, что это не имеет значения. Во-первых, он ничего не добавляет к вопросу (вы просто повторно используете код в вопросе и удаляете некоторые его части). Второе, избегая возвращенной ошибки в go, всегда является плохим советом. В-третьих, согласно ссылке в вопросе, существует значение N и должно использоваться. И, наконец, использование функции - лучший способ кодирования, поэтому нет необходимости ее удалять. – jnmoal

+0

Я отвечаю на точный вопрос, который вы задали. Или вы хотите, чтобы мы полностью решили вашу проблему с чистым «производственным» кодом? Stackoverflow - это не место для подобных вопросов. – Darigaaz

+0

@Darigaaz Спасибо за ваш ответ. Да, я думал, что я сделал это сложнее. Поэтому я спросил. Я начинаю Go, поэтому я подумал, что есть что-то вроде пакетов или библиотек, которые я не знаю и не мог найти. Ах, я не написал комментарий. Я не предполагал, что вы решаете вопрос. Я просто хотел спросить, какую часть преобразовать String в Int. – yamachan

Смежные вопросы