![](/img/trans.png)
[英]getting odd or even value from ArrayList<HashMap<String, String>> in android
[英]Separate odd even from string
下面是問題:
從用戶獲取逗號分隔的數字字符串並打印奇數和偶數的集合。
樣本輸入:
1、2、3、4、5、6、7、8、9、10
示例輸出:
奇數:
1、3、5、7、9
偶數:
2、4、6、8、10
樣本輸入:
20、30、40
示例輸出:
偶數:
20、30、40
我的代碼:
class OddEv{
public static void main(String args[]){
String s;
Scanner in=new Scanner(System.in);
s=in.nextLine();
for(int i=0;i<s.length();i++){
if(s.charAt(i)%2==0){
System.out.print(s.charAt(i));
}
if(s.charAt(i)%2!=0){
System.out.print(s.charAt(i));
}
}
但我沒有得到正確的答案。 根據問題,我應該進行哪些更改才能獲得正確的輸出
實際上我不太了解java所以我不知道在這里做什么
您可以嘗試這個簡單的解決方案,而無需使用任何其他概念,例如regex
。 為此,您可以拆分字符串並將其存儲在字符串數組中,然后遍歷數組,您可以檢查數字是奇數還是偶數。 以下代碼會將字符串中的所有偶數和奇數存儲到名為even
和odd
的數組中。
String s = "1,2,3,4,5,6,7,8,9,10";
int even[] = new int[10];
int odd[] = new int[10];
String ar[] = s.split(",");
int j=0,k=0,oddChecker=0,evenChecker=0;
for(int i=0;i<ar.length;i++){
if(Integer.parseInt(ar[i])%2 == 0){
even[j] = Integer.parseInt(ar[i]);
++j;
evenChecker = 1;
}
else{
odd[k] = Integer.parseInt(ar[i]);
++k;
oddChecker = 1;
}
}
if(oddChecker == 0){
System.out.println("even");
System.exit(0);
}
if(evenChecker == 0){
System.out.println("odd");
System.exit(0);
}
System.out.println("Even numbers:");
for(int i=0;i<j;i++){
if(i!=j-1){
System.out.print(even[i]+",");
}
else{
System.out.print(even[i]);
}
}
System.out.println();
System.out.println("Odd numbers:");
for(int i=0;i<k;i++){
if(i!=k-1){
System.out.print(odd[i]+",");
}
else{
System.out.print(odd[i]);
}
}
輸出:
偶數:
2、4、6、8、10奇數:
1、3、5、7、9
在檢查條件並將數字添加到數組時,不要忘記將 String 轉換為 Integer。 為此,我使用了Integer.parseInt(your_string)
。
使用兩個ArrayList
的Integer
表示奇數和偶數,並將String s
更改為String []s
然后使用userInput.split(",")
分隔數字。 使用Integer.parseInt(str)
方法將 s 中的字符串解析為整數,然后使用 if 語句確定數字是奇數還是偶數,並將它們添加到數組列表中。
public static void main(String args[]) {
String s[];
Scanner in = new Scanner(System.in);
s = in.nextLine().split(",");
ArrayList<Integer> odds = new ArrayList<>();
ArrayList<Integer> evens = new ArrayList<>();
for (String item : s) {
int number = Integer.parseInt(item);
if (number % 2 == 0) {
evens.add(number);
} else {
odds.add(number);
}
}
}
System.out.println("Even Numbers:"); System.out.println(Arrays.toString(evens.toArray()).replaceAll("[\\\\p{Ps}\\\\p{Pe}]", "")); System.out.println("Odd Numbers:"); System.out.println(Arrays.toString(odds.toArray()).replaceAll("[\\\\p{Ps}\\\\p{Pe}]", ""));
10,11,12,13,14,15,16,17,18,19,20
示例輸出:
Even Numbers: 10, 12, 14, 16, 18, 20 Odd Numbers: 11, 13, 15, 17, 19
希望這能解決你的問題
public class CommaSeperatedNum {
public static void main(String args[]){
String s;
Scanner in=new Scanner(System.in);
s=in.nextLine();
String numarray[] = s.split(",");
int odd[] = new int[20];
int oddcnt=0;
int even[] = new int[20];
int evencnt =0;
for(int i=0;i<numarray.length;i++)
{
if( Integer.parseInt((numarray[i]).trim())%2 ==0){
odd[oddcnt] = Integer.parseInt(numarray[i].trim());
oddcnt++;
}
{
even[evencnt] = Integer.parseInt(numarray[i].trim());
evencnt++;
}
}
System.out.print("Odd Numbers : " );
for (int i = 0; i < odd.length && odd[i] != 0; i++) {
System.out.print(odd[i]+" " );
}
System.out.println();
System.out.print("Even Numbers : " );
for (int i = 0; i < even.length && even[i] != 0; i++) {
System.out.print(even[i]+" " );
}
}
以下是一個功能更強大的解決方案,移動部件更少:
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
String[] split = in.nextLine().split(",");
String evens = Arrays.stream(split)
.filter(number -> Integer.parseInt(number) % 2 == 0)
.collect(Collectors.joining(","));
String odds = Arrays.stream(split)
.filter(number -> Integer.parseInt(number) % 2 != 0)
.collect(Collectors.joining(","));
System.out.println("Even Numbers:\n" + evens);
System.out.println("Odd Numbers:\n" + odds);
}
是的,它非常低效,我知道。 可能有更好的方法來做到這一點,但我只是希望 OP 能夠了解代碼的描述性和簡單性。
帶有partitioningBy
的 lambda 進行分離
它只取決於最后一位數字是表示偶數還是奇數
不需要轉換為數值
String inp = "1,2,3,4,5,6,7,8,9,10";
String[] nums = inp.split( "," );
Map<Boolean, List<String>> map = Arrays.stream( nums ).collect(
partitioningBy(s -> "02468".indexOf(s.charAt(s.length() - 1)) >= 0));
System.err.println( "even: " + map.get( true ) );
System.err.println( "odd: " + map.get( false ) );
even: [2, 4, 6, 8, 10]
odd: [1, 3, 5, 7, 9]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.