java编写将一串字符串中的奇数位提出来相加并且偶数位每个数相加
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java编写将一串字符串中的奇数位提出来相加并且偶数位每个数相加相关的知识,希望对你有一定的参考价值。
参考技术A java编写将一串字符串中的奇数位提出来相加并且偶数位每个数相加 String s="123456789012";int s1=0;
int s2=0;
for(int i=0;i<s.length();i++)
if(i%2==0)
s1+=Integer.parseInt(s.substring(i,i+1);
else
s2+=Integer.parseInt(s.substring(i,i+1);
php 字符串奇数相加
$jishu=0;$oushu=0;for($i=0;$i<strlen($str);$i++) if(($i+1)%2==0)
$i是从0开始,但是字符串的奇,偶位数是从1开始,所以用$i+1来判断当前是奇数位还是偶数位 $oushu+=$str[$i]; else $jishu+=$str[$i]; echo "jishu sum=".$jishu.", oushu sum=".$oushu;
java 提出字符串中的数字并相加
import java.util.Scanner;
public class Test
public static void main(String[] args)
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
int result = 0;
for (int i = 0; i < line.length(); i++)
if (Character.isDigit(line.charAt(i)))
result = result + Integer.parseInt(line.charAt(i) + "");
System.out.print(result);
例:输入:123
输出:6
兼容字符串中存在字母的情况:
输入:12ab3
输出:6
java 任意自然数以字符串形式为参数输入,将奇数位和偶数位的个数分别组合再相加输出。求代码!
public class Test /** * @param args */ public static void main(String[] args) Test obj = new Test(); int sum = obj.add("112224"); System.out.println(sum); public int add(String str) String odd = ""; String even = ""; for(int i=0;i<str.length();i++) if(i % 2 == 0) even += str.charAt(i); else odd += str.charAt(i); return Integer.parseInt(odd) + Integer.parseInt(even);
用Java实现:有字符串“1234567890123”,求出该字符串中奇数位和偶数位各数字的和
这种入门的算法就不用别人教了吧
public static void main(String[] args)
String s = "1234";
int sun1 = 0;
int sun2 = 0;
for(int i=0; i<s.length(); i++)
int tmp = Integer.parseInt(s.charAt(i) + "");
if(i % 2 == 0)
sun1 += tmp;
else
sun2 += tmp;
System.out.println("奇数: " + sun1);
System.out.println("偶数: " + sun2);
delphi7 如何截取一段字符串的奇数位和偶数位的字符?
var str:string;
odd_sum,eve_sum,i:integer;
begin
str:='123456789'; odd_sum:=0;odd_sum:=0;
for i := 1 to length(str) do
begin
if i mod 2=1 then odd_sum:=odd_sum+strtoint(str[i])
else eve_sum:=eve_sum+strtoint(str[i]);
end;
showmessage(str+'偶数位和为'+inttostr(eve_sum)+',奇数和为'+inttostr(odd_sum));
end;
题目将字符串s中位于奇数位置的字符 或ASCII码为偶数的字符放入字符串t中
#include <stdio.h>#include <string.h>#define N 80main() char s[N], t[N]; int i,j=0,k=0; printf("\nPlease enter string s : "); gets(s);/***********ERROR***********/ while(s[j]) j++; for(i=0;i<j;i++)/***********ERROR***********/ if(i%2||s[i]%2==0) 这一行没什么问题 t[k++]=s[i];/***********ERROR***********/ t[k]=0; printf("\nThe result is: %s\n",t);
用java编写程序:求从控制台输入一个整数字符串,求他的偶数位和奇数位的和
package tx.w;
import java.util.Scanner;
/**
从控制台输入一串整数,分别求出该整数的偶数位个奇数位之和
*/
public class HomeWork1
public static void main(String[] args)
Scanner sc=new Scanner(System.in);
System.out.println("输入数字串");
String str=sc.next();从控制台获取整数数字串
int length=str.length();获得字符串长度
int a = 0;
int b = 0;
for (int i=0;i<length ;i++ )
if(i%2==0)
char c=str.charAt(i);截取字符串中偶数字符
int x=c-'0';将截取的字符转换为对应的整数
a+=x;
else
char d=str.charAt(i);截取字符串中奇数数字
int y=d-'0';将截取的字符转换为对应的整数
b+=y;
System.out.println("a="+a);
System.out.println("b="+b);
运行结果:
输入数字串
123456789
a=25
b=20
java中的字符串相加
首先你要搞清楚的是字符串用==比较,是比较两个字符串是不是指向同一个对象。
程序在运行的时候会创建一个字符串缓冲池,程序会把字符串常量(如程序中的"a","b","ab","a"+"b")放入字符串缓冲池中(这里"ab","a"+"b"是一个对象)。当使用
String s3 = "ab";
String s4 = s1 + s2;
String s5 = "a" + "b";
这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,s3先被放到了池中,所以在s5被创建的时候,程序找到了具有相同值的 s3,将s5引用s3所引用的对象"ab"。所以比较s5==s3由于两个是指向同一个对象,所以为true。
但是在这些赋值中,涉及到变量运算,所以得到的字符串对象存储在各自的内存中,不是缓冲池中的s3对象,如
String s4 = s1 + s2;
String s6 = s1 + "b";
所以 尽管s4,s6的值均为"ab",但是 s4==s3,s6==s3返回的结果均为false;
同时s4,s6也不是指向相同的对象,因为他们在不同内存中。
StringBuffer s7 = new StringBuffer("abc");
String s8 = s7.substring(3); 这个方法是从第3个字符取字符串,得到的s8为"'; 为空字符串。
所以s8==s3的结果也为false;
如果相比较两个字符串的值是不是相等,最好用.equals()方法。
JAVA实现输入字符串返回字符串中的奇数位的字符
import java.io.InputStream;
import java.util.Scanner;
public class Main2
public static String subString(String s)
if(s == null)
throw new NullPointerException("空字符串");
使用StringBuffer效率比String高
StringBuffer buffer = new StringBuffer();
int n = s.length();
for(int i = 0; i < n; i++)
因为索引是从0开始,所以索引为偶数的是奇数位字符
if(i % 2 == 0)
buffer.append(s.charAt(i));
return buffer.toString();
public static void main(String[] args)
System.out.println("输入数据:");
InputStream input = System.in;
Scanner scanner = new Scanner(input);
String s = scanner.nextLine();
System.out.println(Main2.subString(s));
找出区间[A, B]内所有数字的奇数字位出现次数为偶数,偶数字位出现次数为计数的数的个数。(数位DP)
题目:找出区间[A, B]内所有数字的奇数字位出现次数为偶数,偶数字位出现次数为计数的数的个数。
分析:这道题的状态同样不好取,因为要求每一个奇数的个数都要为偶数,每一个偶数的位数都要为奇数,又因为只有10个数(0~9),又因为没个数只有3种状态,分别是没有(0),奇数个(1),偶数个(2),这样我们就利用3进制进行压缩就可以了,3的10次方不超过60000,因此直接开60000即可,这样dp[i][j]的i表示当前处理到了第i为,j表示当前(0~9)对应的状态
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 25;
typedef long long LL;
LL dp[maxn][60000],bit[maxn];
int judge(int state){ //计算是否满足题意,奇数为偶,偶数为奇
for(int i = 0; i <= 9; ++i, state/=3) {
if((i&1)==1&&state%3==1) {
return 0;
}
if((i&1)==0&&state%3==2) {
return 0;
}
}
return 1;
}
int change(int state,int i){
int temp = state;
int j = i;
while(j--){///取到当前位
temp /= 3;
}
int x = temp%3;
if(x == 0)
state += (int)pow(3.0, i);
else if(x == 1)
state += (int)pow(3.0, i);
else
state -= (int)pow(3.0, i);
return state;
}
LL dfs(int pos,int state,int limit){
if(pos < 1) return judge(state);
LL &ans = dp[pos][state];
if(!limit && ans != -1) return ans;
LL ret = 0;
int len = limit?bit[pos]:9;
for(int i = 0; i <= len; i++)
ret += dfs(pos-1, state==0&&i==0?0:change(state, i), limit&&i==len);
if(!limit) ans = ret;
return ret;
}
LL solve(LL n){
int len = 0;
while(n){
bit[++len] = n%10;
n /= 10;
}
return dfs(len, 0, 1);
}
int main()
{
int T;
scanf("%d", &T);
LL A,B;
memset(dp, -1, sizeof(dp));
while(T--){
scanf("%lld%lld", &A, &B);
printf("%lld
", solve(B)-solve(A-1));
}
return 0;
}
以上是关于java编写将一串字符串中的奇数位提出来相加并且偶数位每个数相加的主要内容,如果未能解决你的问题,请参考以下文章