首先我很抱歉,如果这是一个奇怪的,但我不知道我在编码方面要做什么。
为了澄清我想做什么,我想知道一种方法将receipt
的值“保存”到列表/集合/数组中,然后通过确定{{1的值再次将其保存到列表中,当我打印列表时,在每个列表后打印两个不同的收据值。
让我们说第一次receipt
的值确定它等于x,然后我将它保存到列表并且通过相同的值来确定进程receipt
= y并且我将其添加到列表。它会打印:x然后是y。还是y和y?如果它打印两次receipt
的新值,如何让它在彼此之后打印两个不同的值?
receipt
Edit1:为了清晰起见,包含完整代码。 编辑2:更好的澄清
答案 0 :(得分:0)
您可以使用StringBuilder
附加新字符串。或者,您可以简单地将两个字符串连接到+
- 运算符,但这在执行时间方面效率非常低。
答案 1 :(得分:0)
看起来你问了两个问题。一个问题涉及是否可以保存变量,另一个是关于如何将一堆事物聚合在一起。从您的代码中,您不清楚您的目标是什么。
在java中,您声明的内容,如
String receipt
是参考。这意味着他们会跟踪一段数据。但是,其他事情也可以跟踪同一条数据。所以:
String receipt1 = "100EUR";
String receipt2 = receipt1;
在上面的代码中,内存中只有一个东西含有" 100EUR"在其中,receipt1和receipt2都在查看它。如果有什么东西出现并修改了其中一个
receipt1 = "200EUR";
另一个不受影响。
System.out.println(receipt1);
System.out.println(receipt2);
// output would be
200EUR
100EUR
在很多情况下,一旦通过=符号将某个内容分配给引用,您可以想象引用始终可以访问它,直到下次使用=符号分配引用时才会保持不变指向别的东西。但是,在Java对象中可以改变状态,所以如果你有
List<String> myList = new ArrayList<String>():
并且事情开始调用myList
上的方法来修改其内容,然后myList引用会觉得它指的是变化的东西。引用本身并没有改变,只是指向它的对象。
我把这个主题带到了列表中,因为你可能在创建它们之后试图跟踪所有收据,并且列表中有一个add
函数可以很好地为你做到这一点。
如果你想打印出列表的全部内容,那么你可以有一个循环:
for(String line:myList) {
System.out.println(line);
}
答案 2 :(得分:0)
首先,您可以声明字符串的ArrayList:
ArrayList<String> receipts = new ArrayList<>();
然后添加收据变量的值:
receipts.add(receipt);
最后,您可以打印ArrayList的所有元素
for (String s : receipts)
System.out.println(s);
答案 3 :(得分:0)
我会使用StringBuilder,并继续在循环中添加你想要的东西,在循环结束时为它添加一个换行符:
public static void main(String[] args)
{
StringBuilder receipt;
//Other variable initializations
此外,您的while循环可能会更改为for循环:
for (int i = 0; i < ticketTotal; i++)
{
receipt.append(zoneAmount);
receipt.append(" zone(s), ");
receipt.append(fareType);
receipt.append(", bought at: ");
receipt.append(purchaseLoc);
receipt.append(". Your price: ");
receipt.append(price);
receipt.append(" SEK.\n");
}
然后当你需要打印你的StringBuilder时:
System.out.println(receipt.toString());