将由数字和ArrayList中的单词组成的字符串转换为整数,Java。

huangapple go评论115阅读模式
英文:

Convert String made out of numbers and words of ArrayList to int java

问题

以下是翻译好的部分:

我是一个 Java 初学者,正在尝试运行一个控制台二十一点游戏。
我创建了一个包含卡牌的字符串的 ArrayList,比如 "3 Spades"。
现在我需要检查卡牌的点数,以免超过 21 点。
我已经尝试将所有字符串转换为整数,但对我来说没有起作用。
有没有一种方法可以从字符串中提取出只有数字,并保存为整数?
谢谢你的帮助。

  1. public ArrayList<String> Karten() {
  2. ArrayList<String> Herz = new ArrayList<String>(
  3. Arrays.asList(" 2 Herz "," 3 Herz "," 4 Herz "," 5 Herz "," 6 Herz "," 7 Herz "," 8 Herz "," 9 Herz "," 10 Herz ", " Bube Herz "," Dame Herz "," König Herz "," Ass Herz "));

请注意,由于您要求不回答关于翻译内容的问题,我将只返回翻译好的文本,不做其他回答。如果您需要进一步的帮助,请随时提问。

英文:

I am a Java beginner and trying to get a console blackjack to run.
I created an ArrayList with cards as Strings, such as "3 Spades".
Now I need to check for the values so that I dont get more than 21 for example.
I have tried giving all of the Strings ints but it that isnt working for me.
Is there a way to filter only the numbers out of the String and save as an int?
Thanks for your help.

  1. public ArrayList&lt;String&gt; Karten () {
  2. ArrayList&lt;String&gt;Herz = new ArrayList&lt;String&gt;(
  3. Arrays.asList(&quot; 2 Herz &quot;,&quot; 3 Herz &quot;,&quot; 4 Herz &quot;,&quot; 5 Herz &quot;,&quot; 6 Herz &quot;,&quot; 7 Herz &quot;,&quot; 8 Herz &quot;,&quot; 9 Herz &quot;,&quot; 10 Herz &quot;, &quot; Bube Herz &quot;, &quot; Dame Herz &quot;, &quot; K&#246;nig Herz &quot;, &quot; Ass Herz &quot;));

答案1

得分: 2

当您获得一张卡片时,请尝试以下操作:

  1. String card = "3 Spades";
  2. String[] cardSplit = card.split(" ");
  3. int cardValue = Integer.parseInt(cardSplit[0]);
  4. String cardType = cardSplit[1];

现在您可以将cardValue用作整数,并将其加入总数。如果您需要卡片的类型,您也可以引用cardType,但假设这是21点游戏,我认为这并不重要。

如果有帮助,请告诉我。

英文:

When you get a card, try the following:

  1. String card = &quot;3 Spades&quot;
  2. String[] cardSplit = str.split(&quot; &quot;);
  3. int cardValue = Integer.parseInt(cardSplit[0]);
  4. String cardType = cardSplit[1];

You can now use cardValue as an integer and add it to a total. You can also reference cardType if you need the type of card, but assuming this is Black Jack I don't think it matters much.

Let me know if this helps.

答案2

得分: 2

你还可以创建一个新类型的卡片(Card),它具有一个数值字段:

  1. public class Card {
  2. private int value;
  3. private String valueLabel;
  4. private String shape;
  5. public Card(int value, String valueLabel, String shape) {
  6. this.value = value;
  7. this.valueLabel = valueLabel;
  8. this.shape = shape;
  9. }
  10. public int getValue() {
  11. return value;
  12. }
  13. public String toString() {
  14. return valueLabel + " " + shape;
  15. }
  16. }

这也解决了你在 "Bube Herz"、"Dame Herz"、"König Herz"、"Ass Herz" 这些没有数字的情况下的问题。

现在你可以将你的手牌构建为卡片实例的列表:

  1. ArrayList<Card> cards = new ArrayList<>(Arrays.asList(
  2. new Card(1, "Ass", "Herz"),
  3. new Card(2, "2", "Herz")
  4. ));
  5. int totalValue = cards.stream().mapToInt(c -> c.getValue()).sum();
  6. System.out.println("Your hand:" + cards);
  7. System.out.println("has a total value of:" + totalValue);

输出结果:

  1. Your hand:[Ass Herz, 2 Herz]
  2. has a total value of:3
英文:

You can also create a new type Card which has a numeric value field:

  1. public class Card {
  2. private int value;
  3. private String valueLabel;
  4. private String shape;
  5. public Card(int value, String valueLabel, String shape) {
  6. this.value=value;
  7. this.valueLabel=valueLabel;
  8. this.shape=shape;
  9. }
  10. public int getValue() {
  11. return value;
  12. }
  13. public String toString() {
  14. return valueLabel+&quot; &quot;+shape;
  15. }
  16. }

This also solves your problem for " Bube Herz ", " Dame Herz ", " König Herz ", " Ass Herz " which don't have a number.

Now you can build your hand as a list of Card instances:

  1. ArrayList&lt;Card&gt; cards=new ArrayList&lt;&gt;(Arrays.&lt;Card&gt;asList(new Card(1,&quot;Ass&quot;,&quot;Herz&quot;), new Card(2,&quot;2&quot;,&quot;Herz&quot;)));
  2. int totalValue=cards.stream().mapToInt(c-&gt;c.getValue()).sum();
  3. System.out.println(&quot;Your hand:&quot;+cards);
  4. System.out.println(&quot;has a total value of:&quot;+totalValue);

Output:

  1. Your hand:[Ass Herz, 2 Herz]
  2. has a total value of:3

huangapple
  • 本文由 发表于 2020年8月26日 20:39:39
  • 转载请务必保留本文链接:https://go.coder-hub.com/63597900.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定