1. java中 输入字符串怎么给String数组赋值
java中输入的字符串主要是使用scanner类来接收用户从键盘输入的数值,然后建立一个字符串数组来赋值,代码如下:
publicclassceshi{
publicstaticvoidmain(String[]args){
String[]s=newString[3];//字符串数组
Scannersc=newScanner(System.in);接收用户从键盘输入的字符串
Stringstr=sc.next();
s[0]=str;//输入的字符串str赋值给字符串数组的第一个
}
}
运行结果如下:
2. java输入一个字符串,要求将该字符串中出现的英文字母,按照顺序 进行输出,区分大小写,且大写优先
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Demo {
public static void main(String[] args) {
// 假设输入的内容
String input = "A8r4c5ja5AJp#7";
// 转为 char[]
char[] inputArr = input.toCharArray();
// 存储 大写字母、小写字母
List<String> upperCaseList = new ArrayList<>()
, lowerCaseList = new ArrayList<>();
for (int i = 0; i < inputArr.length; i++) {
if (inputArr[i] >= 65 && inputArr[i] <= 90) { // 大写字母
upperCaseList.add(String.valueOf(inputArr[i]));
}else if (inputArr[i] >= 97 && inputArr[i] <= 122) { // 小写字母
lowerCaseList.add(String.valueOf(inputArr[i]));
}
}
// 将大写字母、小写字母 List 转为 String[]
String[] upperCaseArr = upperCaseList.toArray(new String[0])
, lowerCaseArr = lowerCaseList.toArray(new String[0]);
// 对大写字母进行排序
Arrays.sort(upperCaseArr);
// 对小写字母进行排序
Arrays.sort(lowerCaseArr);
// 取出大写字母,拼成字符串
StringBuilder result = new StringBuilder();
for (int i = 0; i < upperCaseArr.length; i++) {
result.append(upperCaseArr[i]);
}
// 定义接收剩余字母
StringBuilder remainingStr = new StringBuilder();
for (int i = 0; i < lowerCaseArr.length; i++) {
// 将小写字母转为大写字母
String upperCaseStr = lowerCaseArr[i].toUpperCase();
// 取出大写字母所在索引
int index = result.lastIndexOf(upperCaseStr);
if (index != -1) { // 存在大写字母
// 取开头,拼接
String startStr = result.substring(0, index + 1) + lowerCaseArr[i];
// 取结尾
String endStr = result.substring(index + 1);
// 重新赋值
result = new StringBuilder(startStr + endStr);
} else { // 不存在大写字母
remainingStr.append(lowerCaseArr[i]);
}
}
// 将不存在的小写字母拼接
result.append(remainingStr);
System.out.println(result);
}
}
3. Java怎么实现输入一个string表达式然后输出计算的结果
import java.io.*;
import java.util.*;
class BinaryTree{
BinaryTree left=null;
BinaryTree right=null;
char data=0;
}
public class Calculator{
String porder="";
public void postorder(BinaryTree bt){
//递归后序遍历二叉树
if(bt!=null){
postorder(bt.left);
postorder(bt.right);
porder+=bt.data;
}
}
public int calc(String s){
//计算后缀表达式的值
int i=0,len=0,a=0,b=0;
Stack stack=new Stack();
len=s.length();
for(;i<len;i++){
char c=s.charAt(i);
switch(c){
case '+':
a=(int)stack.pop();
b=(int)stack.pop();
stack.push(a+b);
break;
case '-':
b=(int)stack.pop();
a=(int)stack.pop();
stack.push(a-b);
break;
case '*':
a=(int)stack.pop();
b=(int)stack.pop();
stack.push(a*b);
break;
case '/':
b=(int)stack.pop();
a=(int)stack.pop();
stack.push((int)a/b);
break;
default:
//该字符是数字
stack.push(c-'0');
}
}
return stack.pop();
}
public BinaryTree create(String s){
//构造二叉树结点(递归)
int i=0,pos=0,len=0;
String l="",r="";
BinaryTree node=new BinaryTree();
len=s.length();
if(len==0) return null;
if(len==1){
//递归边界
node.data=s.charAt(0);
return node;
}
//去括号
while((pos=s.indexOf(")"))!=-1){
i=pos;
while((s.charAt(i)!='(')&&(i>0)) i--;
String sub=s.substring(i+1,pos);//括号中的表达式
porder="";
postorder(create(sub));//得到后缀表达式
int sum=calc(porder);//计算后缀表达式的值,替换原来括号中的表达式
s=s.substring(0,i)+String.valueOf(sum)+s.substring(pos+1);
len=s.length();//重新计算s的长度
}
//从后往前扫描得到的第一个优先级最低的运算符号的位置
pos=-1;
for(i=len-1;i>0;i--){
char c=s.charAt(i);
if((c=='+')||(c=='-')){
pos=i;
break;
}
else if(((c=='*')||(c=='/'))&&(pos==-1)) pos=i;
}
//在pos位置将s分为左右两部分,递归构造左右两个部分的二叉树
l=s.substring(0,pos);
r=s.substring(pos+1);
node.data=s.charAt(pos);
node.left=create(l);
node.right=create(r);
return node;
}
public static void main(String args[]) throws Exception{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String s=reader.readLine();
Calculator c=new Calculator();
BinaryTree bt=c.create(s);
c.postorder(bt);
System.out.println(c.calc(c.porder));
}
}