package step1; import java.util.Scanner; import java.util.Stack; // Java Stack<E> 类 // 栈是Vector的一个子类,它实现了一个标准的后进先出的栈。 // 栈只定义了默认构造函数,用来创建一个空栈。 栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。 // // boolean empty() 测试堆栈是否为空。 // Object peek( ) 查看堆栈顶部的对象,但不从堆栈中移除它。 // Object pop( ) 移除堆栈顶部的对象,并作为此函数的值返回该对象。 // Object push(Object element) 把项压入堆栈顶部。 // int search(Object element) 返回对象在堆栈中的位置,以 1 为基数。 public class Dex2Oct { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); dex2oct(n); } public static void dex2oct(int n){ //******* begin ********** //******* end ********** } }补充代码
时间: 2023-07-23 21:35:31 浏览: 106
好的,以下是利用栈实现整数的十进制转八进制的Java代码,你可以将其添加到 `//******* begin **********` 和 `//******* end **********` 之间:
```java
public static void dex2oct(int n){
Stack<Integer> stack = new Stack<Integer>();
while(n > 0) {
int remainder = n % 8;
stack.push(remainder);
n /= 8;
}
while(!stack.isEmpty()) {
System.out.print(stack.pop());
}
}
```
输入一个十进制整数,将其除以8取余数,并将余数入栈,直到商为0。最后,依次弹出栈中元素,即可得到该整数的八进制表示。
相关问题
import java.util.Scanner; import java.util.Stack; public class Kuohao { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); check(str); } public static void check(String str) { Stack<Character> stack = new Stack<Character>(); //循环该数组下标,栈为空进栈 for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (stack.isEmpty()) { stack.push(c); } else { //当前的栈顶 char top = stack.peek(); //通过ascll码判断 if (top-c == -1 || top - c == -2) { stack.pop(); } else { stack.push(c); } } } //当栈为空时说明括号完全匹配 if (stack.isEmpty()) { System.out.println("Yes"); } else { System.out.println("No"); } } }
这是一段 Java 代码,用于检查一个字符串中的括号是否匹配。这个程序首先会读入一个字符串,然后调用 `check` 方法来检查其中的括号。`check` 方法使用一个栈来存储括号,并循环遍历字符串中的每个字符。如果当前栈为空,则将该字符进栈。否则,将栈顶元素与当前字符进行比较,如果它们是一对括号,则弹出栈顶元素,否则将当前字符进栈。最终,如果栈为空,则说明括号匹配,否则不匹配。
import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.Scanner; import java.util.Stack; public class Assignment3 { public static boolean isMatched(String input) { Stack<Character> stack = new Stack<>(); for (char c : input.toCharArray()) { if (c == '{' || c == '[' || c == '(') { stack.push(c); } else if (c == '}' || c == ']' || c == ')') { if (stack.isEmpty()) { return false; } char top = stack.pop(); if ((top == '{' && c != '}') || (top == '[' && c != ']') || (top == '(' && c != ')')) { return false; } } } return stack.isEmpty(); } public static void main(String[] args) throws FileNotFoundException { File file=new File("C:\Users\DELL\Desktop\Chapter2\ADT\input_a3 (1).txt"); File file1=new File("C:\Users\DELL\Desktop\Chapter2\ADT\output_a3.txt"); Scanner sc1=new Scanner(file1); Scanner sc=new Scanner(file); PrintWriter writer = new PrintWriter(file1); while (sc.hasNextLine()) { String input = sc.nextLine(); if (isMatched(input)) { writer.printf("%s Valid \n", input); } else { writer.printf("%s inValid\n", input); } } writer.close(); sc.close(); sc1.close(); } }的ReadMe.txt
这段代码是一个用 Java 编写的括号匹配检查程序,它会读取一个文件中的多行文本,对每一行文本进行括号匹配检查,并将结果输出到另一个文件中。如果一行文本中的括号匹配正确,程序会输出 "Valid",否则会输出 "inValid"。程序使用了一个栈来实现括号匹配检查,具体实现可以参考 isMatched 方法的代码。在程序运行时,需要提供两个参数,第一个参数是输入文件的路径,第二个参数是输出文件的路径。
阅读全文