1.字符类型输入,从键盘输入啥,输出就是啥。
use std::io;
fn main() {
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("Failed to read line");
println!("You guessed: {}",guess);
}
2.输入整数字符类型,输出整数类型
use std::io::stdin;
fn main() {
let mut input = String::new();
stdin().read_line(&mut input)
.ok()
.expect("Failed to read line");
let i: i32 = match input.trim().parse() {
Ok(num) => num,
Err(_) => {
println!("请输入整数,请勿输入无关符号!");
return;
}
};
println!("i: {i}");
}
使用 trim() 去除多余的符号,例如回车号,然后使用 parse() 来做数据转换。
3.输入字符串[1,2,4,5,6],输出整型数组vec类型
use std::io::stdin;
fn main() {
let mut vec:Vec<i32>=Vec::new();
let mut input = String::new();
stdin().read_line(&mut input)
.ok()
.expect("Failed to read line");
let first_last_off: &str = &input[1..input.len() - 2];
println!("{}", first_last_off);
let v:Vec<&str> = first_last_off.split(',').collect();
for i in v{
let i:i32=match i.trim().parse(){
Ok(num)=>num,
Err(_)=>{
println!("请输入整数,请勿输入无关符号!");
return;
}
};
vec.push(i);
}
}
4.例子:求一个数组中次数大于n/3的数,返回数组
use std::io::stdin;
use std::collections::HashMap;
pub fn majority_element(nums: Vec<i32>)->Vec<i32>{
let n=nums.len();
let l=n/3;
let mut V:Vec<i32>=Vec::new();
let mut map=HashMap::new();
for word in nums{
let count =map.entry(word).or_insert(0);
*count+=1;
};
println!("{:#?}",map);
for (k,v) in map{
if(v>l){
V.push(k)
}
}
V
}
fn main() {
let mut vec:Vec<i32>=Vec::new();
let mut num:Vec<i32>=Vec::new();
let mut input = String::new();
stdin().read_line(&mut input)
.ok()
.expect("Failed to read line");
let first_last_off: &str = &input[1..input.len() - 2];
println!("{}", first_last_off);
let v:Vec<&str> = first_last_off.split(',').collect();
for i in v{
let i:i32=match i.trim().parse(){
Ok(num)=>num,
Err(_)=>{
println!("请输入整数,请勿输入无关符号!");
return;
}
};
vec.push(i);
}
num=majority_element(vec);
println!("{:?}",num)
}
5.各种类型的互相转换
let int_value = 5;
//整型转字符串
let string_value = int_value.to_string();
//字符串转32位有符号整型
let back_int = string_value.parse::<i32>().unwrap();
// 字符串转32位无符号整型
let back_int = string_value.parse::<u32>().unwrap();
//字符串转16位有符号整型
let back_int = string_value.parse::<i16>().unwrap();