2017-04-20 95 views
-2

我是Java的新手,我正在尝试制作一个程序,该程序需要一个字符串,如'asdfg',并打印单词和总数与这些字母相关联。所以'a'将是'苹果',它的分配号码是10,'s'是菠菜,分配的号码是5,'d'是'狗',分配的号码是15, 'f'将是'青蛙',它的分配数量是20,'g'是'山羊',分配的数量是25.输出看起来像'苹果菠菜狗青蛙山羊75'。Java - 为输入字符的字符串分配一个数字和一个字

我到目前为止的代码是

import java.util.Scanner; 
import java.util.ArrayList; 
import java.io.*; 


public class PizzaTwo { 
    public static void main(String[] args) throws Exception { 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Please enter the details of your order"); 
     String myList = scan.nextLine(); 


     for (int i = 0; i < myList.length(); i++) { 
      int letNum = 0; 
      switch (myList.charAt(i)) { 
       case 'a': 
        System.out.println("apple" + letNum); 
        letNum += 10; 
        break; 
       case 's': 
        System.out.println("spinach" + letNum); 
        letNum += 5; 
        break; 
       case 'd': 
        System.out.println("dog" + letNum); 
        letNum += 15; 
        break; 
       case 'f': 
        System.out.println("frog" + letNum); 
        letNum += 20; 
        break; 
       case 'g': 
        System.out.println("goat", letNum); 
        letNum += 25; 
        break; 
       default: 
        System.out.println("Nothing.."); 
        break; 
      } 
     } 


    } 
} 

感谢您的任何帮助。

+1

我投票的数据关闭这个问题作为题外话,因为你实际上没有问一个问题。 –

+0

我很抱歉,我的模糊不清,我的问题是:如何将数字和单词一起指定给我的字符串? –

+1

你的问题仍然像泥巴一样清晰。您发布的代码有问题吗?如果是这样,那是什么?如果不是,那为什么呢?你需要帮助我们来帮助你!请参阅:[当我不确定我在找什么时,如何提出一个好问题?](https://meta.stackoverflow.com/questions/262527/how-to-ask-a-good-question- when-im-not-sure-what-im-looking-for) –

回答

0

首先,我想建议你为变量使用更好的名称。

您正在重置每个循环中的“letNum”,然后将其移出循环。

我推荐阅读约StringStringBuilder。 字符串对象是不可变的,所以为了创建更多的变量来连接“风味”,我使用了可变的StringBuilder。

字符串是恒定的;在创建

上一个StringBuilder的主要业务后,它们的值不能改变的追加和插入方法,这些方法重载以接受任何类型

import java.util.Scanner; 

public class PizzaTwo { 

    public static void main(String[] args) throws Exception { 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Please enter the details of your order"); 
     String flavors = scan.nextLine(); 

     int price = 0; 
     StringBuilder order = new StringBuilder(); 

     for (int i = 0; i < flavors.length(); i++) { 
      switch (flavors.charAt(i)) { 
      case 'a': 
       order.append("apple "); 
       price += 10; 
       break; 
      case 's': 
       order.append("spinach "); 
       price += 5; 
       break; 
      case 'd': 
       order.append("dog "); 
       price += 15; 
       break; 
      case 'f': 
       order.append("frog "); 
       price += 20; 
       break; 
      case 'g': 
       order.append("goat "); 
       price += 25; 
       break; 
      default: 
       order.append("No flavor added "); 
       break; 
      } 
     } 

     System.out.println(order.append(price)); 
    } 
} 
0

它看起来像你想要的数字只出现在所有的单词已经打印后,从你的描述“苹果菠菜狗青蛙山羊75”,但你的代码看起来像它试图追加到每个字。

假设您希望输出像您的示例输出一样,不要在每个单词后打印数字,而是在所有单词打印完毕后打印您用来累积每个字母值的变量'letNum '在你的代码中。

另外,每次处理新信时都不要重置'letNum'。

+0

这正是我想要的。我会怎么做呢?谢谢你的回应。 –

0

取2个单独的变量,1个字符串和另一个数字。每次与现有字符串连接时,都表示类似于String s =“”; int n = 0; S + = “苹果”;的n + = 10; S + = “蛙”; .... 现在,当完成循环打印字符串然后数字。

相关问题