反向int golang

时间:2016-03-13 16:11:49

标签: indexing go int

如何将12345更改为54321? 使用字符串,您可以将字符串更改为rune,然后将其反转,但不能对整数执行相同的操作。我搜索过,发现没有人谈论这个。例如
131415>>> 514131
1357>>> 7531
123a>>>的错误
 CNC中
我在想,为什么不创建一个slice和索引呢? 然后我意识到你不能索引int
http://play.golang.org/p/SUSg04tZsc
我的新问题
你如何索引int?
你如何扭转一个int?

5 个答案:

答案 0 :(得分:4)

这是一个不使用索引int

的解决方案
package main

import (
    "fmt"
)

func reverse_int(n int) int {
    new_int := 0
    for n > 0 {
        remainder := n % 10
        new_int *= 10
        new_int += remainder 
        n /= 10
    }
    return new_int 
}

func main() {
    fmt.Println(reverse_int(123456))
    fmt.Println(reverse_int(100))
    fmt.Println(reverse_int(1001))
    fmt.Println(reverse_int(131415))
    fmt.Println(reverse_int(1357))
}

结果:

654321
1
1001
514131
7531

Go playground

答案 1 :(得分:3)

我将整数转换为字符串,反转字符串,并将结果转换回字符串。

import java.sql.*;
import java.util.*;

public class ConnectionMySQL {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter a name: ");
        String isim = scan.next();

        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/student","root","");
            //System.out.println("Connection success");
            String query= "SELECT surname FROM student_table WHERE name='isim'";
            Statement stm =conn.createStatement();
            ResultSet rs= stm.executeQuery(query);

            while (rs.next()) {
                System.out.println("Name: " + rs.getString("name")+ " Surname: "+rs.getString("surname"));
            }
        }
        catch (Exception e) {
            System.err.println(e);
        }
    }
}

答案 2 :(得分:0)

与第一个答案非常相似,但这会检查以确保您不会超出类型。

func reverse(x int) int {    
    rev := 0
    for x != 0 {
        pop := x % 10
        x /=  10
        if rev > math.MaxInt32/10 || (rev == math.MaxInt32 /10 && pop > 7) {
            return 0
        }
        if rev < math.MinInt32/10 || (rev == math.MinInt32/10 && pop < -8) {
            return 0
        }
        rev = rev * 10 + pop
    }

    return rev
}

答案 3 :(得分:0)

还翻转负数 int

func Abs(x int) int {
  if x < 0 {
    return -x
  }
   return x
}

func reverse_int(n int) int {
  newInt := 0
  sign := 1
   if n < 0 {
    sign = -1
   }
   n = Abs(n)
  for n > 0 {
    remainder := n % 10
    newInt = newInt*10 + remainder
    n /= 10
  }
  return newInt * sign 
}

func main() {
  fmt.Println(reverse_int(-100))
  fmt.Println(reverse_int(-1001))
  fmt.Println(reverse_int(131415))
  fmt.Println(reverse_int(1357))
}

答案 4 :(得分:0)

类似于 Fokiruna 的答案,但也会检查 32 位溢出

func reverse(x int) int {
    result, sign := 0, 1
 
    if(x < 0) {
        sign = -1
        x = -x     
    }

    for x > 0 {
        remainder := x % 10;
        result = result * 10 + remainder
        x = x/10
    }
    
    var checkInt int = int(int32(result))

    if checkInt != result {
        return 0
    }

    return result * sign
}