题目是: 依次输入10个商品名称和数量,格式为:商品名称,商品数量。然后输出。要求:输出是如果商品名称相等则商品数量相加,然后再输出。问题是相同的商品如何相加,用什么来输出。下面是我写的,到输出时不知道怎么写了,帮帮忙啊!!!!
/**
* 输入商品名称,再输入商品数量,保存在一个字符串中
* 如:电视,3
* 空调,1
* 输入10次,然后打印出来
**/class StringTest5{
public static void main(String args[]){
//定义一个字符串数组用来存储商品名称和数量
String str[]=new String[11];
String strName[]=new String[11];//存储商品名称
int strNum[]=new int[11]; //存储商品数量
//用for循环输入10个商品名称和数量
for(int i=0;i<10;i++){
str[i]=javax.swing.JOptionPane.showInputDialog("请输入商品名称");
//判断输入是否带有","。
if(str[i].indexOf(",")<0){
javax.swing.JOptionPane.showMessageDialog(null,"输入错误,格式为:商品名称,商品数量");
return;
}
//截取商品数量
String str1=str[i].substring((str[i].indexOf(",")+1),(str[i].length()));
//判断逗号后面是否是数字
for(int j=0;j<str1.length();j++){
if(!(Character.isDigit(str1.charAt(j)))){
javax.swing.JOptionPane.showMessageDialog(null,"输入错误,格式为:商品名称,商品数量1111");
return;
}
}
}
//实现输入的商品名称相同时,商品数量相加
for(int s=0;s<10;s++){
//截取商品名称//截取商品数量并转为整型数
strName[s]=str[s].substring(0,str[s].indexOf(","));
strNum[s]=Integer.parseInt(str[s].substring((str[s].indexOf(",")+1),(str[s].length())));
}
/////// 到下面就不知道怎么写了,帮帮忙改一下,谢谢了!!
for(int j=0;j<10;j++){
for(int k=0;k<9-j;k++){
//判断商品名称是否相等
if(strName[k].equals(strName[k+1])){
strNum[k]+=strNum[k+1];
strNum[k+1]=0;
str[k]=strName[k].concat((","+strNum[k]+""));
str[k+1]="";
}
}
// System.out.println (str[j]);
}
}
}
/**
* 输入商品名称,再输入商品数量,保存在一个字符串中
* 如:电视,3
* 空调,1
* 输入10次,然后打印出来
**/class StringTest5{
public static void main(String args[]){
//定义一个字符串数组用来存储商品名称和数量
String str[]=new String[11];
String strName[]=new String[11];//存储商品名称
int strNum[]=new int[11]; //存储商品数量
//用for循环输入10个商品名称和数量
for(int i=0;i<10;i++){
str[i]=javax.swing.JOptionPane.showInputDialog("请输入商品名称");
//判断输入是否带有","。
if(str[i].indexOf(",")<0){
javax.swing.JOptionPane.showMessageDialog(null,"输入错误,格式为:商品名称,商品数量");
return;
}
//截取商品数量
String str1=str[i].substring((str[i].indexOf(",")+1),(str[i].length()));
//判断逗号后面是否是数字
for(int j=0;j<str1.length();j++){
if(!(Character.isDigit(str1.charAt(j)))){
javax.swing.JOptionPane.showMessageDialog(null,"输入错误,格式为:商品名称,商品数量1111");
return;
}
}
}
//实现输入的商品名称相同时,商品数量相加
for(int s=0;s<10;s++){
//截取商品名称//截取商品数量并转为整型数
strName[s]=str[s].substring(0,str[s].indexOf(","));
strNum[s]=Integer.parseInt(str[s].substring((str[s].indexOf(",")+1),(str[s].length())));
}
/////// 到下面就不知道怎么写了,帮帮忙改一下,谢谢了!!
for(int j=0;j<10;j++){
for(int k=0;k<9-j;k++){
//判断商品名称是否相等
if(strName[k].equals(strName[k+1])){
strNum[k]+=strNum[k+1];
strNum[k+1]=0;
str[k]=strName[k].concat((","+strNum[k]+""));
str[k+1]="";
}
}
// System.out.println (str[j]);
}
}
}
对各种商品计数 让后将他们以 键值对的形式插入HashMap中
String为名字 ,Integer为数目
保存名字在商品名数组中
创建HashMap<String,Integer> result=new HashMap<String,Integer>();
然后可以从HashMap中取出
for(int i=0;i<strName.length;i++){
System.out.println(result.get(strName[i]).toString();
}别照抄 只是思路
如果不用,你的也没问题,
你已经将name和num取道两个数组里面了。就不要再用str[i]这个数组了
你从
你不是让str[i]=0了吗?strName[k+1]=""了
输出的时候,只要加个判断就行了只要strName[i]不等于“”就输出for(int j=0;j<10;j++){
String xxx=strName[j];
int k = strNum[j];
for(int k=j+1;k<10;k++){
//判断商品名称是否相等
if(xxx.equals(strName[k])){
strNum[j]+=strNum[k];
strName[k]="";
strNum[k]=0;
}}
for(int i=0;i<10;i++)
{
if(!"".equals(strName)){
System.out.println(strName[i] + ":" + strNum[k].toString());
}
}
====>
if(!"".equals(strName[i])){