Я смог достичь этого в ASP.NET MVC, используя IP-адрес клиента и freegeoip.net API. freegeoip.net является бесплатным и не требует лицензии.
Ниже приведен пример кода, который я использовал.
String UserIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(UserIP))
{
UserIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
string url = "http://freegeoip.net/json/" + UserIP.ToString();
WebClient client = new WebClient();
string jsonstring = client.DownloadString(url);
dynamic dynObj = JsonConvert.DeserializeObject(jsonstring);
System.Web.HttpContext.Current.Session["UserCountryCode"] = dynObj.country_code;
Вы можете пройти через этот пост для более подробной информации. Надеемся, что это поможет!
Я могу предложить поставить точку в строке ввода
if (yourString.contains("."))
Это не лучший способ решить эту проблему, но это работает.
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String buff = scanner.nextLine();
if (buff.contains(".")){
double tempDouble = Double.parseDouble(buff);
System.out.println(tempDouble);
} else {
int integer = Integer.parseInt(buff);
System.out.println(integer);
}
}
Не уверен, правильно ли я понял ваш вопрос, но я думаю, что вы пытаетесь напечатать двойное без десятичных значений.
Вы можете преобразовать двойное значение в значение типа int, выполнив что-то вроде: int x = (int) y
здесь y
- double. Теперь, если вы напечатаете x
, вы не получите десятичных знаков.
Примечание: int Typecasting не является хорошей идеей, так как ваш двойник может выйти за пределы диапазона.