package reverse
import java.util.Scanner
import stack.StackX
public class ReverseApp {
public static void main(String[] args) {
Scanner in = new Scanner(System.in)
while(true){
System.out.print("Enter a String:")
String value = in.nextLine()
if(value.equals("")){
System.out.println("Program is Exit")
break
}
Reverse rev = new Reverse(value)
System.out.println("Reversed:"+rev.doRev())
}
}
}
class Reverse {
private String input
private String output
public Reverse(String in){
input = in
}
public String doRev(){
int stackSize = input.length()
StackX stack = new StackX(stackSize)
for(int i = 0i<input.length()i++){
char ch = input.charAt(i)
stack.push(ch)
}
output = ""
while(!stack.isEmpty()){
output += (char)stack.pop()
}
return output
}
}
package stack
public class StackX {
private int maxSize
private int[] stackArray
private int top
public StackX(int s) {
maxSize = s
stackArray = new int[maxSize]
top = -1
}
public void push(int value) {
stackArray[++top] = value
}
public int pop() {
return stackArray[top--]
}
public int peek() {
return stackArray[top]
}
public boolean isEmpty() {
return (top == -1)
}
public boolean isFull() {
return top == (maxSize - 1)
}
}
不好意思,弄得太复杂了。。培唯拦。
其实就这样算了。。配胡。
import java.util.Scanner
public class TestStack {
public static void main(String[] args) {
Scanner in = new Scanner(System.in)
String str = in.next()
System.out.println(str)
for(int i = str.length()-1i>=0i--){
char c = str.charAt(i)
System.out.print(c)
}
}
}
1、字符串转换成旁胡数字:C语言库函数:atoi 实现了此功能。
int atoi(const char *nptr)
函数说明: 参数nptr字符串,如果第一个非空格字符存在或者不是数字也不是正负号则返回零,否则开始做类斗举型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。
代码如下:
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
/**
*功能:string转int
*注意:
*1、字符串是否为空;
*2、忽略\t 或空格;
*3、溢出判断;
*4、输入字符串只有“+”或“-”号时;
*5、扫描参数src字符串,跳过前面的空格字符,直到遇上数
字或正负符号才开始做转换,而再遇到非数字或字符串结束时
('\0')才结束转换,并将结果返回。
*/
int convertionStringToInt(char *src)
{
bool flag=false
long num=0 /*使用long类型,数据溢出情形*/
int minus=0
if((NULL == src)||('\0'== *src)) //判断如惨字符串指针是否为空
{
return 0
}
if(('\t' == *src)||(' ' == *src)) //忽略tab字符和空格字运销拦符
{
src ++
}
if('-' == *src) //判断是否是‘+’ 或 ‘-’符号
{
flag=true
src++
}
else if('+' == *src)
{
src++
}
minus=flag?-1:1
while('\0' != *src)
{
if(('0' <= *src)&&('9' >= *src))
{
num= num*10+minus*((*src)-'0')
if((!flag &&num >0x7FFFFFFF)
|| (flag &&num <(signed int)0x80000000))//判断转换后的整型数是否溢出,注意正负数均要判断
{
num = 0
break
}
src++
}
else
{
break//遇到非数字字符时结束转换
}
}
return num
}
int main()
{
char data[8][15]={"4673","15234234234","-3489","+9776","ab67","123bd","+","-"}
int i=0
int val=0
for(i=0i<8i++)
{
printf("Before data[%ld]=%s ",i,data[i])
val=convertionStringToInt(data[i])
printf("After Convert=%d\n",val)
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)